加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • WRR 算法
    • SWRR 算法
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

負載均衡實現(xiàn)方式

2021/01/21
393
閱讀需 3 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

負載均衡(Load Balance),其意思就是將負載(工作任務)進行平衡、分攤到多個操作單元上進行執(zhí)行。在負載均衡中可以分為兩種方式,硬件方式與軟件方式。硬件負載均衡主要是有 F5、思科,軟件方式(不區(qū)分四層與七層負載均衡)主要包括 http 重定向、DNS 重定向、反向代理(如 nginx)、NAT 轉換等。

WRR 算法

假設有3臺機器a、b、c,權重分別為5,1,1, WRR(Weighted Round Robin)算法實現(xiàn)方式是:每次選出權重最大的機器,其權重減 1,直到權重全部為 0。然后按照生成的序列循環(huán)。

                           

最終得到的循環(huán)序列為:a,a,a,a,a,b,c,雖然此時負載是均衡的(5:1:1),但是前五次訪問都打到 a 機器,b 和 c 機器是空閑的。理想狀態(tài)是在均衡的情況下讓訪問次數(shù)也均衡分布,于是就有了 SWRR 算法(Smooth Weighted Round Robin),平滑加權輪訓調(diào)度算法。

SWRR 算法

對于上面的案例,SWRR 算法策略是:

1、從權重中選出最大的,減去總權重

2、然后再給每個權重加上自身權重初始值

3、再次輪訓,直到權重為 0,確定序列

得到的最終循環(huán)序列是:a,a,b,a,c,a,a,訪問效果比 WRR 算法更優(yōu)。

但是 SWRR 算法在大量并發(fā)來臨的時候,第一次始終會選擇 a 機器,就有可能導致 a 機器癱瘓。解決方案為:對于生成的序列隨機選擇一個開始,比如有 5 臺負載的機器,都生成了 a,a,b,a,c,a,a 的序列,但是每臺機器不完全按照這個序列輪訓,而是隨機選擇一個開始,那生成的序列就可能變成下面這樣:

這樣能降低流量突增時第一臺機器被打癱瘓的概率。

相關推薦

電子產(chǎn)業(yè)圖譜

機械轉行IT狗,目前在阿里巴巴淘寶事業(yè)群。日常記錄Linux應用開發(fā)、嵌入式操作系統(tǒng)、無線網(wǎng)絡協(xié)議棧。剛深入使用Java,跟大家一起入門交流。