Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具

客户端负载均衡

服务端负载均衡架构示意图
image.png
硬件负载均衡的设备或是软件负载均衡的软件模块都会维护一个下挂可用的服务清单, 通过心跳检测来剔除故障的服务器节点以保证清单中都是可以正常访问的服务器节点. 当客户端发送请求到负载均衡设备的时候, 该设备按照某种算法(比如线性轮询, 按权重负载 按流量负载等)从维护的可用服务器清单中取出一台服务器的地址, 然后进行转发.
而在客户端负载均衡中, 所有客户端都维护着自己要访问的服务清单, 而这些服务清单来自于服务注册中心.

Spring Cloud Ribbon使用非常简单:
使用@LoadBalanced注解修饰RestTemplate即可

RestTemplate详解

restTemplate会使用Ribbon的自动化配置, 同时配置@LoadBalanced注解还能够开启客户端负载均衡.

  1. @Configuration
  2. public class RestTemplateConfig {
  3. @Bean
  4. @LoadBalanced
  5. public RestTemplate restTemplate() {
  6. return new RestTemplateBuilder().build();
  7. }
  8. }

重试机制

image.png