• 正文
    • WRR 算法
    • SWRR 算法
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

負(fù)載均衡實(shí)現(xiàn)方式

2021/01/21
328
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

負(fù)載均衡(Load Balance),其意思就是將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行。在負(fù)載均衡中可以分為兩種方式,硬件方式與軟件方式。硬件負(fù)載均衡主要是有 F5、思科,軟件方式(不區(qū)分四層與七層負(fù)載均衡)主要包括 http 重定向、DNS 重定向、反向代理(如 nginx)、NAT 轉(zhuǎn)換等。

WRR 算法

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

                           

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

SWRR 算法

對(duì)于上面的案例,SWRR 算法策略是:

1、從權(quán)重中選出最大的,減去總權(quán)重

2、然后再給每個(gè)權(quán)重加上自身權(quán)重初始值

3、再次輪訓(xùn),直到權(quán)重為 0,確定序列

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

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

這樣能降低流量突增時(shí)第一臺(tái)機(jī)器被打癱瘓的概率。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄