Springcloud之Ribbon[负载均衡]

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

负载均衡:其意思就是分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

1.使用.

  1).Ribbon是搭配Spring-Cloud+Euerka使用,实现Euerka的负载均衡.因为新版Euerka的JAR包已经包含了Ribbon,所pom文件不用添加Ribbon,可以直接使用.

  Springcloud之Ribbon[负载均衡]

 

  2).Ribbon在代码中的实现:Ribbon+RestTemplate 实现负载均衡

    1).controller层

  Springcloud之Ribbon[负载均衡]

 

          2)config层[RestTemplate的实现]

    Springcloud之Ribbon[负载均衡]

 

     3)main的启动方法

    Springcloud之Ribbon[负载均衡]

 

     4)Ribbon必须不能被componse扫到,所以要放在controller上层的另一个包中

    Springcloud之Ribbon[负载均衡]

 

     5)定义Ribbon的规则[Ribbon有7中规则,这里是随机]

    Springcloud之Ribbon[负载均衡]

 

     启动就可以了.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Ribbon默认的算法为轮询算法;

Ribbon中的7中负载均衡算法:

(1)RoundRobinRule:轮询;

(2)RandomRule:随机;

(3)AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;

(4)WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快的服务权重越大被选中的概率越大。刚启动时如果统计信息不足,则使用RoundRobinRule(轮询)策略,等统计信息足够,会切换到WeightedResponseTimeRule;

(5)RetryRule:先按照RoundRobinRule(轮询)策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务;

(6)BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;

(7)ZoneAvoidanceRule:复合判断Server所在区域的性能和Server的可用性选择服务器;

      

 

上一篇:nacos、ribbon和feign的简明教程


下一篇:ribbon源码一