ribbon的負載均衡策略
- com.netflix.loadbalancer.RandomRule:從提供服務的實例中以隨機的方式;
- com.netflix.loadbalancer.RoundRobinRule:以線性輪詢的方式,就是維護一個計數器,從提供服務的實例中按順序選取,第一次選第一個,第二次選第二個,以此類推,到最后一個以后再從頭來過;
- com.netflix.loadbalancer.RetryRule:在RoundRobinRule的基礎上添加重試機制,即在指定的重試時間內,反復使用線性輪詢策略來選擇可用實例;
- com.netflix.loadbalancer.WeightedResponseTimeRule:對RoundRobinRule的擴展,響應速度越快的實例選擇權重越大,越容易被選擇;
- com.netflix.loadbalancer.BestAvailableRule:選擇並發較小的實例;
- com.netflix.loadbalancer.AvailabilityFilteringRule:先過濾掉故障實例,再選擇並發較小的實例;
- com.netflix.loadbalancer.ZoneAwareLoadBalancer:采用雙重過濾,同時過濾不是同一區域的實例和故障實例,選擇並發較小的實例。
配置方法
1.常用配置
ribbon:
ConnectTimeout: 1000 #服務請求連接超時時間(毫秒)
ReadTimeout: 3000 #服務請求處理超時時間(毫秒)
OkToRetryOnAllOperations: true #對超時請求啟用重試機制
MaxAutoRetriesNextServer: 1 #切換重試實例的最大個數
MaxAutoRetries: 1 # 切換實例后重試最大次數
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改負載均衡算法
2.負載均衡算法的配置可以通過java代碼的方式來實現
@Bean
public IRule loadBalancer(){
return new AvailabilityFilteringRule();
}