一、简介
Ribbon是Netfix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等,当然,也可以为Ribbon实现自定义的负载均衡算法。
在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。
二、为服务消费者整合Ribbon
2.1、引入ribbon依赖
1
2
3
4
|
<
dependency
>
<
groupId
>org.springframework.cloud</
groupId
>
<
artifactId
>spring-cloud-starter-ribbon</
artifactId
>
</
dependency
>
|
2.2、为RestTemplate添加@LoadBalanced注解(Application)
1
2
3
4
5
|
@Bean
@LoadBalanced
public
RestTemplate restTemplate(){
return
new
RestTemplate();
}
|
2.3、调用其它微服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@GetMapping
(
"/user/{id}"
)
public
User findById(
@PathVariable
Long id)
throws
Exception {
ServiceInstance serviceInstance =
this
.loadBalancerClient.choose(
"spring-ribbon-eureka-client2"
);
// 打印当前选择的是哪个节点
System.out.println(
"serviceId : "
+ serviceInstance.getServiceId());
System.out.println(
"hoost : "
+ serviceInstance.getHost());
System.out.println(
"port : "
+ serviceInstance.getPort());
System.out.println(
"============================================================"
);
if
(
null
== id) {
return
null
;
}
return
this
.restTemplate.getForObject(
"http://spring-ribbon-eureka-client2/"
+ id, User.
class
);
}
|
说明:
1、spring-ribbon-eureka-client2是服务提供者注册到Eureka Server上的应用名称
2、本次测试开启了两个spring-ribbon-eureka-client2服务提供者,一个端口是8080,一个是8083
2.4、测试
访问:http://192.168.1.83:8082/user/1
效果:
本文转自我爱大金子博客51CTO博客,原文链接http://blog.51cto.com/1754966750/1947059如需转载请自行联系原作者
我爱大金子