手记

Ribbon负载均衡策略介绍

目前主流的负载方案分为两种,一种是集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的,比如F5,也有软件的,比如Nginx。

另一种则是客户端自己做负载均衡,根据自己的请求情况做负载,Ribbon就是属于客户端自己做负载的。

一句话介绍那就是Ribbon是Netflix开源的一款用于客户端负载均衡的工具软件。GitHub地址:https://github.com/Netflix/ribbon

Ribbon默认的策略是轮询,我们可以自定义负载策略来覆盖默认的,当然也可以通过配置指定使用哪些策略。

Ribbon支持的策略如下图,GrayPushRule请忽略,那是我自定义的灰度发布的Rule:

image.png

  • BestAvailabl:选择一个最小的并发请求的Server,逐个考察Server,如果Server被tripped了,则跳过。

  • AvailabilityFilteringRule:过滤掉那些一直连接失败的被标记为circuit tripped的后端Server,并过滤掉那些高并发的的后端Server或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运行状态。

  • ZoneAvoidanceRule:复合判断Server所在区域的性能和Server的可用性选择Server。

  • RandomRule:随机选择一个Server。

  • RoundRobinRule:轮询选择, 轮询index,选择index对应位置的Server。

  • RetryRule:对选定的负载均衡策略机上重试机制,在一个配置时间段内当选择Server不成功,则一直尝试使用subRule的方式选择一个可用的server。

  • ResponseTimeWeightedRule:作用同WeightedResponseTimeRule,二者作用是一样的,ResponseTimeWeightedRule后来改名为WeightedResponseTimeRule。

  • WeightedResponseTimeRule:根据响应时间分配一个weight(权重),响应时间越长,weight越小,被选中的可能性越低。

使用指定的规则只需要加上下面的配置即可:

# 配置负载均衡策略fsh-house.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule



作者:尹吉欢
链接:https://www.jianshu.com/p/9fff486b4f2f


0人推荐
随时随地看视频
慕课网APP