天天看點

玩轉Eureka+Ribbon系列之Ribbon的負載均衡政策

文章目錄

  • ​​1、全局設定​​
  • ​​1.1、随機政策​​
  • ​​1.2、輪詢政策​​
  • ​​1.3、重試政策​​
  • ​​1.4、最少并發數政策​​
  • ​​1.5、可用過濾政策​​
  • ​​1.6、響應時間+權重政策​​
  • ​​1.7、區域權重政策​​
  • ​​2、局部設定​​
政策類 name 描述
RandomRule 随機政策 随機選擇
RoundRobinRule 輪詢政策 按照index循環
RetryRule 重試政策 在一個配置時間段内當選擇Server不成功,則一直嘗試使用subRule的方式選擇一個可用的server;輪詢政策的增強版
BestAvailableRule 最低并發政策 逐個考察server,如果server斷路器打開,則忽略,再選擇其中并發連結最低的server
AvailabilityFilteringRule 可用過濾政策 過濾掉一直失敗并被标記為circuit tripped的server,過濾掉那些高并發連結的server(active connections超過配置的門檻值)或者使用一個AvailabilityPredicate來包含過濾server的邏輯,其實就就是檢查status裡記錄的各個Server的運作狀态;
WeightedResponseTimeRule 響應時間權重重政策 根據server的響應時間配置設定權重,響應時間越長,權重越低,被選擇到的機率也就越低。響應時間越短,權重越高,被選中的機率越高,這個政策很貼切,綜合了各種因素,比如:網絡,磁盤,io等,都直接影響響應時間
ZoneAvoidanceRule 區域權重政策 綜合判斷server所在區域的性能,和server的可用性,輪詢選擇server并且判斷一個AWS Zone的運作性能是否可用,剔除不可用的Zone中的所有server

1、全局設定

在cofig的配置檔案裡

1.1、随機政策

@Bean
    public RandomRule getRandomRule() {     //随機政策
        return new RandomRule();
    }      

1.2、輪詢政策

@Bean
    public RoundRobinRule getRoundRobinRule() {     //輪詢政策
        return new RoundRobinRule();
    }      

1.3、重試政策

@Bean
    public RetryRule getRetryRule() {           //重試政策
        return new RetryRule();
    }      

1.4、最少并發數政策

@Bean
    public BestAvailableRule getBestAvailableRule() {       //最少并發數政策
        return new BestAvailableRule();
    }      

1.5、可用過濾政策

@Bean
    public AvailabilityFilteringRule getAvailabilityFilteringRule() {   //可用過濾政策
        return new AvailabilityFilteringRule();
    }      

1.6、響應時間+權重政策

@Bean
    public WeightedResponseTimeRule getWeightedResponseTimeRule() { //響應時間+權重政策
        return new WeightedResponseTimeRule();
    }      

1.7、區域權重政策

@Bean
    public ZoneAvoidanceRule getZoneAvoidanceRule() {       //區域權重政策
        return new ZoneAvoidanceRule();
    }      

2、局部設定

service-provider:   #服務名
  ribbon:
    NFLoadBalancerRuleClassName:      

繼續閱讀