zoukankan      html  css  js  c++  java
  • SpringCloud实战之初级入门(二)— 服务注册与服务调用

    1.环境介绍

    接上一篇(SpringCloud实战之初级入门(一)— eureka注册中心),我们讲到了注册中心的高可用,集群,这篇我们讲如何服务如何注册在eureka上,如何使用Feign调用服务。

    1. 继续使用上一篇的文章中的mirco-service-eureka工程,为了节约演示环境,我们去掉集群部署,只启动一台eureka实例。
    2. 修改eureka-server-node-1-test.yml中的defaultZone为http://localhost:9001/eureka/
    3. 通过修改的“eureka-server-node-1”名称,debug启动本实例。

    2.服务提供

    2.1 创建工程

    为了照顾不同段位朋友的感受,像这种简单的创建工程过程就不再贴图了,如有不清楚的地方,请看上篇文章。创建一个名为"mirco-service-provider"的工程,可以勾选“eureka discovery”,或者在项目的pom.xml文件中加入如下代码

    		<dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    		</dependency>
    

    2.2 修改配置文件

    1. 老规矩,将applicaiton.properties修改为application.yml。
    2. 加入如下代码
    server:
      port: 8001
      
    spring:
      application:
        name: service-provider
        
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:9001/eureka/
    

    2.3 修改启动文件

    1. 在启动文件中加上"@EnableDiscoveryClient"注解,然后启动工程。
    2. 打开浏览器访问http://localhost:9001/,可以看到如下图所示,说明服务已经注册成功。

    2.4 创建第一个微服务

    怎么建一个类就不说了,直接上代码:

    @RestController
    public class MyFristServiceController {
    	/**
    	 * 我的第一个微服务程序
    	 * @param name
    	 * @return
    	 */
    	@RequestMapping(value="/helloWorld" , method= RequestMethod.GET)
    	public String helloWorld(String name) {
    		return "Hello," + name + ", this is your world!" ;
    	}
    }
    

    重启服务,访问http://localhost:8001/helloWorld?name=jack,出现如下图,说明我们第一个微服务创建成功:

    2.5 亲测注意事项

    1. 加入spring-cloud-starter-netflix-eureka-client依赖后启动工程,会在控制台中显示在注册中,然后服务器就停止了,这是因为没有加入web方面的依赖,导致工程以为你这就是一个普通的验证过程,这里并没有去监听端口,依赖如下:
    		<dependency>  
    		    <groupId>org.springframework.boot</groupId>  
    		    <artifactId>spring-boot-starter-web</artifactId>  
    		</dependency>
    

    3.服务调用

    3.1 创建工程

    我们用同样的方式来创建一个名为"mirco-service-consumer"的工程

    3.2 修改配置文件

    1. 老规矩,将applicaiton.properties修改为application.yml。
    2. 加入如下代码
    server:
      port: 8002
    
    spring:
      application:
        name: service-consumer
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:9001/eureka/
    

    3.3 修改启动文件

    在启动文件中加上"@EnableDiscoveryClient"和"@EnableFeignClients"注解

    3.4 创建第一个微服务调用

    1. 创建一个名为“MyFristConsumer”的Feign远程调用接口:
    @FeignClient(name = "service-provider")
    public interface MyFristConsumer {
    	/**
    	 * 远程调用helloWorld的接口
    	 * @param name
    	 * @return
    	 */
    	@RequestMapping(value="/helloWorld" , method= RequestMethod.GET)
    	public String helloWorld(@RequestParam("name") String name) ;
    }
    

    这里面@FeignClient(name = "xxx"),xxx表示要调用的应用服务名称一定不能弄错了,然后是下面helloWorld方法,这里面要注意的问题是如果我们的被调用服务是用@PathVariable的方法获取参数,这里参数获取方法务必与被调用服务对应,如果不对应是访问不到服务的。

    1. 创建一个controller类来测试我们的调用是否成功
    @RestController
    public class MyFristConsumerController {
    	@Autowired
    	private MyFristConsumer myFristConsumer ;
    	/**
    	 * 我的第一个微服务调用程序
    	 * @param name
    	 * @return
    	 */
    	@RequestMapping(value="/consumerHelloWorld" , method= RequestMethod.GET)
    	public String helloWorld(String name) {
    		return myFristConsumer.helloWorld(name) ;
    	}
    }
    

    启动服务,访问http://localhost:8002/consumerHelloWorld?name=rose,出现如下图,说明我们第一个微服务调用成功:

    4.结语

    • 涉及了三个工程,分别是:mirco-service-eureka、mirco-service-provider以及mirco-service-consumer。
    • 虽然我们这里看到了一个简单的服务调用,并模拟了一个类RPC似的调用,但是大家要知道实际在使用的过程中肯定不是一个提供服务,一个来进行调用这么简单,服务与服务之间都是穿插调用的。以后我会提供公司级的项目结构,并辅以实际例子来为大家讲解。
    • mirco-service-consumer工程中,我们没有看写入被调用的服务地址,而是连上了eureka注册中心,并实现调用,这样就可以让我们方便在服务集群的情况下做动态上、下线。
    • 限于篇幅,有兴趣的朋友们可以参照我第一篇,一个工程配置多个服务节点的方法试一下,看能不能启动多个服务提供调用。

    5.一点点重要的事情

  • 相关阅读:
    java_web连接SQL_server详细步骤
    探索需求-设计前的质量之二
    EF三种编程方式详细图文教程(C#+EF)之Code First
    EF三种编程方式详细图文教程(C#+EF)之Model First
    EF三种编程方式详细图文教程(C#+EF)之Database First
    探索需求-设计前的质量之一
    编写有效用例之三
    编写有效用例之二
    golang 环境安装
    golang 命令详解
  • 原文地址:https://www.cnblogs.com/yb2020/p/10248042.html
Copyright © 2011-2022 走看看