目錄
Zuul2服務通信
超時相關
默認超時配置
自定義超時配置
負載均衡
Zuul2服務通信
描述:zuul2通過Ribbon完成客戶端負載均衡以及與服務器群集進行通信。
zuul2的通信是集成Ribbon實現的,在Origin中集成Ribbon基本配置(例如IClientConfig)以完成功能接入,在loadbanace層將ribbion與netty結合用來抉擇下層客戶端服務器。
zuul2集成ribbon core結構圖:
zuul2集成 ribbon loadbalanacer結構圖:
?
超時相關
默認超時配置
- 默認連接超時時間ReadTimeout為2S
- 默認讀超時時間ConnectTimeout為5S
- 超時后的默認重試次數MaxAutoRetriesNextServer為1次?(它使用MaxAutoRetriesNextServer,應該與ribbon的NIWSServerListClassName相關參數有關系,同時在zuul2官網wiki有相關描述指定本配置控制重試)
可以在ribbon源碼中找到相應配置信息:
自定義超時配置
#指定全局連接超時ConnectTimeout配置
ribbon.ConnectTimeout=100#指定全局讀超時ReadTimeout配置
ribbon.ReadTimeout=1000#指定全局重試配置
ribbon.MaxAutoRetriesNextServer=0#指定origin連接超時ConnectTimeout配置(覆蓋全局)
<origin>.ribbon.ConnectTimeout=100#指定origin讀超時ReadTimeout配置(覆蓋全局)
<origin>.ribbon.ReadTimeout=10000#指定origin重試配置(覆蓋全局)
<origin>.ribbon.MaxAutoRetriesNextServer=1
?ribbon相關配置項及默認值:https://github.com/Netflix/ribbon/blob/master/ribbon-core/src/main/java/com/netflix/client/config/CommonClientConfigKey.java
負載均衡
ribbon負載均衡的七種算法
RandomRule:隨機算法實現RoundRobinRule:輪詢負載均衡策略,依次輪詢所有可用服務器列表,遇到第一個可用的即返回RetryRule :先按照RoundRobinRule策略獲取服務,如果獲取服務失敗會在指定時間內重試AvaliabilityFilteringRule: 過濾掉那些因為一直連接失敗的被標記為circuit tripped的后端server,并過濾掉那些高并發的的后端server(active connections 超過配置的閾值) BestAvailableRule :會先過濾掉由于多次訪問故障二處于斷路器跳閘狀態的服務,然后選擇一個并發量最小的服務WeightedResponseTimeRule: 根據響應時間分配一個weight,響應時間越長,weight越小,被選中的可能性越低ZoneAvoidanceRule: 復合判斷server所在區域的性能和server的可用性選擇server
后續將會持續完善ribbon、制定ribbon負載均衡算法以滿足流量調度需求。
?
---------------------
作者:xbl丶
來源:CSDN
原文:https://blog.csdn.net/qq_37822090/article/details/114360518
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件