(五)SpringBoot+SpringCloud —— Ribbon負載均衡與配置

負載均衡

Ribbon是Netflix 發佈的開源項目,主要功能是提供客戶端的軟件負載均衡算法,將Netflix的中間層服務鏈接在一塊兒。Ribbon客戶端組 件提供一系列完善的配置項如鏈接超時,重試等。簡單的說,就是在配置文件中列出Load Balancer後面全部的機器,Ribbon會自動的幫助你基於某種規則(如簡單輪詢,隨即鏈接等)去鏈接這些機器。咱們也很容易使用Ribbon實現 自定義的負載均衡算法。git

Ribbon提供了7個自帶的負載均衡器:github

策略 說明
BestAvailableRule 選擇一個最小的併發請求的服務。
AvailabilityFilteringRule 過濾掉一直鏈接失敗服務, 過濾掉那些高併發的服務( 超過配置閾值 )。
WeightedResponseTimeRule 根據權重負載(基於相應時間),權重越小,被選中的可能性越低。
RetryRule 在配置時間內當選擇的服務調用不成功, 在選定的負載均衡策略機上重試。
RoundRobinRule 按順序輪訓選擇服務。
RandomRule 隨機選擇一個服務。
ZoneAvoidanceRule 對服務所在的區域和可用性,進行復雜的判斷後選擇一個服務。

配置簡介

在引入Spring Cloud Ribbon的依賴以後,就可以自動化構建下面這些接口的實現:算法

  • IClientConfig:Ribbon的客戶端配置;
  • IRule:負載均衡策略;
  • IPing:實例檢查策略;
  • ServerList:服務實例清單維護策略;
  • ServerListFilter:服務實例清單過濾策略;
  • ILoadBalancer:負載均衡器策略;

參數配置

對於Ribbon的參數配置分爲局部和全局兩種:spring

全局:ribbon.<key>=<value>;併發

局部:<服務簽名>.ribbon.<key>=<value>;負載均衡

重試機制

  • spring.cloud.loadbalancer.retry.enable:開啓重試;
  • ribbon.ConnectTimeout:請求鏈接的超時時間;
  • ribbon.ReadTimeout:請求處理的超時時間;
  • ribbon.OkToRetryOnAllOperations:對全部操做請求都重試;
  • ribbon.MaxAutoRetriesNextServer:切換實例的重試次數;
  • ribbon.MaxAutoRetries:對當前實例的重試次數;

Github:https://github.com/XuePeng87/owl-bookstoredom

相關文章
相關標籤/搜索