Ribbon 负载均衡机制
在上一章的 "Ribbon 框架简介及搭建(没有与SpringCloud整合,独立使用)" 中介绍了Ribbon框架及搭建使用,那么在这一章会讲一讲Ribbon的负载均衡的机制,以下的规则 笔者将会以通俗易懂的介绍给大家讲解。
Ribbon内置的负载均衡规则
1. RoundRobinRule
通过简单的轮询服务列表,来选择一个服务器
2. AvailabilityFilteringRule
对以下两种服务器忽略掉,就不会选择它们了。
2.2 在默认情况下连接失败3次,这个服务器就会被置为"短路"状态,这个状态将持续30秒。如果再连不上,那么这个状态的持续时间将会持续增加。
# 连接失败的次数,默认为3次
niws.loadbalancer.<clientName>.connectionFailureCountThreshold
# 一个实例可以保持"不可用"状态的最大周期,默认为30秒
niws.loadbalancer.<clientName>.circuitTripMaxTimeoutSeconds
# 最高并发数
<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimit
3. WeightedRsponseTimeRule
会为每一个服务器赋予一个权重值,服务器响应时间越长,这个服务器的权重值就越少,权重有可能会决定服务器的选择(存在随机)
4. ZoneAvoidanceRule
以区域,可用的服务器为基础进行服务器的选择,使用Zone对服务器进行分类
5. BastAvailableRule
忽略那些短路的服务器,并选择并发数较低的服务器
6. RandomRule
随机选择一个可用的服务器
7. RetryRule
它是一个含有重试机制的选择逻辑
其他配置
NFLoadBalancerPingClassName:检查服务器是否存活
NFLoadBalanceClassName:指定负载均衡器的实现类,可以使用该配置自定义负载均衡器