1. 程式人生 > 實用技巧 >5、Ribbon負載均衡策略

5、Ribbon負載均衡策略

Ribbon 的負載均衡策略是有IRule介面定義,該介面如下實現:

RoundRobinRule 輪詢
RandomRule 隨機
AvailabilityFilterRule 先過濾掉由於多次訪問故障的服務,以及併發連線數超過閾值的服務,然後對剩下的服務按照輪詢策略進行訪問
WeightedResponseTimeRule 根據平均響應時間計算所有服務的權重,響應時間越快服務權重越大被選中的概率就越高,如果服務剛啟動是統計資訊不足,則使用RoundRobinRule 策略,待統計資訊足夠,會切換到該WeightedResponseTimeRule 策略
RetryRule 先按照RoundRobinRule 策略分發,如果分發到的服務補鞥呢訪問,則指定時間內進行重試,分發其他可用的服務
BestAvailableRule 先過濾掉由於多次訪問故障的服務,然後選擇一個併發量最小的服務
ZoneAvoidanceRule 綜合判斷服務節點所在區域的效能和服務節點的可用性,來決定選擇哪個服務

配置Ribbon負載均衡策略

//配置檔案
@Configuration
public class BeanConfig {
    /**
     * @Bean 等價於 <bean id="restTemplate" class="xxx.xxx.RestTemplate"/>
     *
     * @return
     */
    @LoadBalanced  //使用Ribbon實現負載均衡的呼叫
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    /**
     * 覆蓋掉原來ribbon預設的輪詢負載均衡策略
     * @return
     */
    @Bean
    public IRule iRule(){
        return new RandomRule(); //隨機負載均衡
    }
}