Ribbon負載均衡之負載均衡策略


負載均衡策略

Ribbon的負載均衡規則是一個叫做IRule的接口來定義的,每一個子接口都是一種規則:

RoundRobinRule  簡單輪詢服務列表來選擇服務器

AvailabilityFilteringRule  對以下兩種服務器進行忽略

(1)在默認情況下,這台服務器如果3次連接失敗,這台服務器就會被設置為“短路”狀態。短路狀態將持續30秒,如果再次連接失敗,短路的持續時間就會幾何級地增加。
(2)並發數過高的服務器。如果一個服務器的並發連接數過高,配置了AvailabilityFilteringRule規則的客戶端也會將其忽略。並發連接數的上限,可以由客戶端的<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimit屬性進行配置。

WeightedResponseTimeRule  根據權重值選擇服務器,需要為服務器賦予權重值。服務器響應時間越長,這個服務器的權重就越小。這個規則會隨機選擇服務器

ZoneAvoidanceRule  以區域可用的服務器為基礎進行服務器的選擇。使用Zone對服務器進行分類。對Zone內的多個服務做輪詢。(默認

BestAvailableRule  忽略那些短路的服務器,並選擇並發數較低的服務器 

RandomRule  隨機選擇一個可用的服務器

RetryRule  重試機制的選擇邏輯

指定負載均衡規則

方式一:服務消費者的代碼實現指定IRule的實現類

    @Bean
    public IRule rule(){
        return new RandomRule();
    }

查看結果:

注意:此方式作用范圍是消費者中所有服務提供者

方式二:服務消費者的配置文件(application.yml)中配置負載均衡規則

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule # 負載均衡規則

查看結果:

 

注意:此方式作用范圍是針對消費者中單一的服務提供者

飢餓加載

Ribbon默認是采用懶加載,即第一次訪問時才會去創建LoadBalanceClient,請求時間會很長。

飢餓加載則會在項目啟動時創建,降低第一次訪問的耗時通過下面配置開啟飢餓加載:

ribbon:
  eager-load:
    enabled: true # 開啟飢餓加載
    clients: userservice # 指定服務名為userservice的服務飢餓加載

查看結果

注意:

ribbon.eager-load.clients類型是List,yml文件中應該寫成

ribbon:
  eager-load:
    enabled: true # 開啟飢餓加載
    clients:
      - userservice
      - userservice1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM