springCloudRibbon负载均衡服务调用

springCloudRibbon负载均衡服务调用

1、介绍

  • ​ springCloudRibbon是基于NetflixRibbon(已不在更新)实现的一套客户端,实现负载均衡的工具。
  • 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等。简单的说就是在配置文件中列出Load Balancer后面的所有及其,Ribbon会自动的帮助你基于某种规则(如简单查询,随机连接等)去连接这些机器。Ribbon帮助你可以很简单的实现自定义的负载均衡的算法。

2、更新与代替。

springCloudRibbon负载均衡服务调用

  • Ribbon进入维护模式
  • spring预期采用springCloud Ribbon来取代
  • springCloudRibbon负载均衡服务调用

3、load Balance负载均衡。

springCloudRibbon负载均衡服务调用

3.1工作步骤

  1. 选择注册中心
  2. 根据用户指定的策略(轮询、随机),在从server中取到的服务注册列表中选择一个地址。

springCloudRibbon负载均衡服务调用

4、Ribbon导入(在2.0之后的版本默认自带ribbon实现负载均衡)

springCloudRibbon负载均衡服务调用
springCloudRibbon负载均衡服务调用

5、Ribbon自带的负载规则(IRule接口)

springCloudRibbon负载均衡服务调用

  1. 轮询
    • com.netflix.loadbalancer.RoundRobinRule
  2. 随机
    • com.netflix.loadbalancer.RandomRule
  3. 重试(先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试)
    • com.netflix.loadbalancer.RetryRule
  4. 扩展(对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择)
    • WeightedResponseTimeRule
  5. 过滤(服务)(会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务)
    • BestAvailableRule
  6. 过滤实例(先过滤掉故障实例,再选择并发较小的实例)
    • AvailabilityFilteringRule
  7. 默认规则(默认规则,复合判断server所在区域的性能和server的可用性选择服务器)
    • ZoneAvoidanceRule

6、如何替换访问规则

  • 注意包的目录结构

springCloudRibbon负载均衡服务调用

  1. 创建配置类
    • springCloudRibbon负载均衡服务调用
  2. 修改主启动类
    • springCloudRibbon负载均衡服务调用

7、Ribbon默认轮询算法分析

  • 算法原理

springCloudRibbon负载均衡服务调用

  • ​ RoundRobinRule源码分析

    springCloudRibbon负载均衡服务调用

springCloudRibbon负载均衡服务调用