(十九) 跟我學習SpringCloud-Ribbon負載均衡策略介紹

Ribbon 作爲一款客戶端負載均衡框架,默認的負載策略是輪詢,同時也提供了很多其他的策略,能夠讓用戶根據自身的業務需求進行選擇。
整體策略代碼實現類如圖 1 所示。

圖中說明如下:

1)BestAvailabl

選擇一個最小的併發請求的 Server,逐個考察 Server,如果 Server 被標記爲錯誤,則跳過,然後再選擇 ActiveRequestCount 中最小的 Server。

2)AvailabilityFilteringRule

過濾掉那些一直連接失敗的且被標記爲 circuit tripped 的後端 Server,並過濾掉那些高併發的後端 Server 或者使用一個 AvailabilityPredicate 來包含過濾 Server 的邏輯。其實就是檢查 Status 裏記錄的各個 Server 的運行狀態。

3)ZoneAvoidanceRule

使用 ZoneAvoidancePredicate 和 AvailabilityPredicate 來判斷是否選擇某個 Server,前一個判斷判定一個 Zone 的運行性能是否可用,剔除不可用的 Zone(的所有 Server),AvailabilityPredicate 用於過濾掉連接數過多的 Server。

4)RandomRule

隨機選擇一個 Server。

5)RoundRobinRule

輪詢選擇,輪詢 index,選擇 index 對應位置的 Server。

6)RetryRule

對選定的負載均衡策略機上重試機制,也就是說當選定了某個策略進行請求負載時在一個配置時間段內若選擇 Server 不成功,則一直嘗試使用 subRule 的方式選擇一個可用的 Server。

7)ResponseTimeWeightedRule

作用同 WeightedResponseTimeRule,ResponseTime-Weighted Rule 後來改名爲 WeightedResponseTimeRule。

8)WeightedResponseTimeRule

根據響應時間分配一個 Weight(權重),響應時間越長,Weight 越小,被選中的可能性越低。

推薦分佈式架構源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章