简介
前面讲了eureka服务注册与发现,但是结合eureka集群的服务调用没讲。
这里的话 就要用到Ribbon,结合eureka,来实现服务的调用;
Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。
在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。展示了Ribbon与Eureka配合使用时的架构。
初步应用
Ribbon是客户端负载均衡,所以肯定集成再消费端,也就是consumer端
我们修改microservice-student-consumer-80
首先,引入依赖,pom.xml 加入 ribbon相关依赖
<!--ribbon相关依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>
application.yml加
eureka: client: register-with-eureka: false #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false service-url: defaultZone: http://eureka2001.javaxl.com:2001/eureka/,http://eureka2002.javaxl.com:2002/eureka/,http://eureka2003.javaxl.com:2003/eureka/
ribbon结合eureka来调用服务提供者;
SpringCloudConfig也改成 要加个负载均衡配置 @LoadBalanced
@Configuration public class SpringCloudConfig { /** * 调用服务模版 * @return */ @Bean @LoadBalanced // 引入ribbon负载均衡 public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
因为和eureka整合,所以启动类StudentConsumerApplication_80 加个注解 @EnableEurekaClient
这里还有一个,要修改下StudentConsumerController的PRE_HOST,改成指定的微服务应用名称;
当然这里要先在服务提供者microservice-student-provider-1001的application.yml加下配置,指定下应用名称:
application:
name: microservice-student
我们的微服务应用名称是 microservice-student
所以服务调用者这边的控制器里PRE_HOST改成 http://MICROSERVICE-STUDENT即可;
MICROSERVICE-STUDENT为Eureka注册中心的应用名称
@RestController @RequestMapping("/student") public class StudentConsumerController { // private final static String SERVER_IP_PORT = "http://localhost:1001"; private final static String SERVER_IP_PORT = "http://MICROSERVICE-STUDENT";
上面配置好后,我们可以测试下;
先启动三个eureka,然后再启动服务提供者,再启动服务消费者;
执行 http://localhost/student/list
结果就出来了,说明配置OK;
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有