Dubbo學習筆記-Dubbo的負載均衡策略

當服務提供方是集羣的時候,爲了避免大量請求一直落到一個或幾個服務提供方機器上,從而使這些機器負載很高,甚至打死,需要做一定的負載均衡策略。Dubbo提供了多種均衡策略,缺省爲random,也就是每次隨機調用一臺服務提供者的機器。

Dubbo提供的負載均衡策略

Random LoadBalance:隨機策略。按照概率設置權重,比較均勻,並且可以動態調節提供者的權重。
RoundRobin LoadBalance:輪詢策略。輪詢,按公約後的權重設置輪詢比率。會存在執行比較慢的服務提供者堆積請求的情況,比如一個機器執行的非常慢,但是機器沒有掛調用(如果掛了,那麼當前機器會從Zookeeper的服務列表刪除),當很多新的請求到達該機器後,由於之前的請求還沒有處理完畢,會導致新的請求被堆積,久而久之,所有消費者調用這臺機器上的請求都被阻塞。
LeastActive LoadBalance:最少活躍調用數。如果每個提供者的活躍數相同,則隨機選擇一個。在每個服務提供者裏面維護者一個活躍數計數器,用來記錄當前同時處理請求的個數,也就是併發處理任務的個數。所以如果這個值越小說明當前服務提供者處理的速度很快或者當前機器的負載比較低,所以路由選擇時候就選擇該活躍度最小的機器。如果一個服務提供者處理速度很慢,由於堆積,那麼同時處理的請求就比較多,也就是活躍調用數目越大,這也使得慢的提供者收到更少請求,因爲越慢的提供者的活躍度越來越大。
ConsistentHash LoadBalance:一致性Hash策略。一致性Hash,可以保證相同參數的請求總是發到同一提供者,當某一臺提供者掛了時,原本發往該提供者的請求,基於虛擬節點,平攤到其他提供者,不會引起劇烈變動。

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