dubbo原理:負載均衡算法

Dubbo 中有四種負載均衡策略:RandomLoadBalance(按權(quán)重隨機)、RoundRobinLoadBalance(輪詢)、LeastActiveLoadBalance(最少活躍數(shù))、ConsistentHashLoadBalance(一致性哈希)


LoadBalance

1. RandomLoadBalance 隨機策略

  • 如果所有的權(quán)重一樣,則隨機挑選一個節(jié)點;
  • 節(jié)點權(quán)重不一樣:A(1),B(2),C(3),D(4)
    • 先根據(jù)總權(quán)重10 隨機生成一個數(shù),比如說3;
    • 接下來遍歷所有節(jié)點:3-1=2;2-2=0;0-3=-3,知道offset< 0
    • 3<0 則返回C節(jié)點

2. RoundRobinLoadBalance

輪詢是Dubbo的負載均衡策略;

  • Round-Robin Scheduling: 按照1-N(節(jié)點數(shù)量) 順序分配節(jié)點,不考慮權(quán)重。如果某一節(jié)點處理速度較慢,那么該節(jié)點就會累計大量的請求。
  • Weighted Round-Robin Scheduling(按照權(quán)重的輪詢):

3. LeastActiveLoadBalance

假設(shè)有A、B兩個節(jié)點。A、B兩個節(jié)點分別處理兩個請求,計數(shù)分別+1;如果B節(jié)點處理請求比A快,B處理完請求后,計數(shù)-1。于是A的計數(shù)為1,B的計數(shù)為0. 下次請求過來時,B的計數(shù)比較小,于是B節(jié)點獲得請求。如果A、B的計數(shù)值一樣,則按照節(jié)點的權(quán)重隨機選取(參考RandomLoadBalance)。
擴展:ActiveLimitFilter可以用來限制客戶端的并發(fā)請求數(shù)量

4. ConsistentHashLoadBalance

相同參數(shù)的請求,最終都會請求到一個節(jié)點上去。

  1. 如果某一個節(jié)點down了,節(jié)點總數(shù)-1,hash/(N-1)和原來的hash/(N)的差別比較大,導(dǎo)致緩存失效,會引起服務(wù)端較大的震蕩。N越大,震蕩越大。
  2. 一致性Hash算法解決上述問題
  • 環(huán)形Hash空間
    按照常用的Hash取模的方式,將key分布在0~(2^32)-1的數(shù)字空間中,我們可以將這些數(shù)字頭尾相連,想象成一個閉合的環(huán)形。


    屏幕快照 2019-06-30 下午1.12.13.png
  • 采用一致性Hash算法,把請求參數(shù)、節(jié)點映射到上述的數(shù)字空間中。
  • 按照順時針的順序,找到最近的節(jié)點。
  • 如果某一個節(jié)點down了,請求只會按照順時針尋找到下一個節(jié)點。于是只影響了一個節(jié)點。但是這樣增加了被影響節(jié)點的訪問壓力,為了分散這種影響,可以使用虛擬節(jié)點。
  • 假如有N個真實節(jié)點,把每個真實節(jié)點映射成M個虛擬節(jié)點,再把 M*N 個虛擬節(jié)點, 散列在圓環(huán)上. 各真實節(jié)點對應(yīng)的虛擬節(jié)點相互交錯分布這樣,某真實節(jié)點down后,則把其影響平均分擔(dān)到其他所有節(jié)點上.(中間方案)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 有人說:“其實改變的話,考證和學(xué)一門技術(shù)是無法解決的,真正的改變是你的思想和別人不一樣?!?這句話讓我想到《月亮和...
    落揚虛虛閱讀 224評論 1 1
  • 將欲望轉(zhuǎn)變?yōu)樨敻坏倪^程中,毅力是一個不可或缺的因素,成功需要百折不撓的精神。 千言萬語不如一次實際行動...
    天下誰人不讀書閱讀 382評論 0 1
  • 選擇大于努力,并不是說選擇以后就可以不需要努力,而是做好選擇后更加的努力。 要實踐吧。 什么更重要? 剛剛跟盆友吵...
    大人黃桃閱讀 145評論 0 0
  • 人這一生會遇到很多危險和困難,躲是躲不掉的,只有克服它,它才會消失! 有些難只有面對了,接受了,才能過去,回過頭再...
    隨心追夢人閱讀 1,555評論 0 0

友情鏈接更多精彩內(nèi)容