执行流程

  • 从注册中心获取服务列表
  • 根据负载策略找到目标服务,重新构造请求地址
  • 使用 Web 请求工具对目标服务进行远程调用

    Ribbon 与 Spring Cloud Loadbalancer

    | 组件 | 组件提供的负载策略 | 支持负载的客户端 | | —- | —- | —- | | Ribbon | 轮询、随机、重试策略、权重优先策略、
    BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
    AvailabiliyFilteringRule:先过滤掉故障实例,再选择并发较小的实例
    ZoneAvoidanceRule:默认规则,复合判断server所在区域的性能和server的可用性选择服务器 | feign、openfeign、RestTemplate等 Web 调用工具 | | Spring Cloud Loadbalancer | 轮询、随机 | Ribbon 所支持的、WebClient |

LoadBalancer 的优势主要是,支持响应式编程的方式异步访问客户端,依赖 Spring Web Flux 实现客户端负载均衡调用。

原理

在 LoadBalancerAutoConfiguration 自动配置类中会给标有 @LoadBalanced 注解的 RestTemplate 添加一个负载均衡拦截器,这样就能通过 LoadBalancerInterceptor 去添加负载均衡策略

  1. <br />