版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/88854597
在分布式架构中,服务端负载均衡通常由Nginx实现分发请求的,而客户端的同一个实例部署在多个应用上时,也需要实现负载均衡,Spring Cloud Ribbon( [ˈrɪbən] ) 正好提供了这个功能。
1. Ribbon
Ribbon [ˈrɪbən] 是 Netflix 发布的开源项目,其主要功能是提供客户端的软件负载均衡,将 Netflix 的中间层服务连接在一起。 Ribbon的客户端组件提供了一系列完善的配置项,例如连接超时重试等。
在Eureka的自动配置依赖模块 spring-cloud-starter-eureka 中,传递依赖。同时使用时,Ribbon会利用从Eureka读取到的服务信息列表,在调用服务实例时,以合理的方式负载。
2. 使用
十分简单,直接在实例化的RestTemplate的方法上添加注解 @LoadBalanced,并在RestTemplate执行方法中使用服务实例的名称即可。
@Bean
@LoadBalanced // 默认轮询
public RestTemplate restTemplate() {
return new RestTemplate();
}
@RestController
public class TestController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/print")
public String print() {
// 调用ms-user1应用的一个显示Hello功能,使用服务名 ms-user1
return restTemplate.getForObject("http://ms-user1/test", String.class);
}
}