算法:加權輪詢算法

加權輪詢算法是負載均衡算法中的一種。在負載均衡的場景下,後端服務器會根據其資源,如內存、cpu等,分配不同的權值。負載均衡器會根據權值分發請求。假設後端有3臺服務器,其加權分別為A(5),B(3),C(2)。有10次請求到來時,可能的調度結果是AABACABCAB。

主要有兩種常見的加權輪詢算法。

1.循環迭代服務器列表,從中選出大於等於閾值的服務器。閾值初始為最大權值,每次迭代後衰減所有權值的最大公約數。以提到的情況為例。

權值的最大公約數為:1,即每次閾值衰減1

初始閾值為:5

迭代情況如下:

算法:加權輪詢算法

迭代情況

迭代5次,會選出的服務器序列為AAABABCABC。

2.方法1有一個缺陷,不夠平滑,會出現訪問集中的情況。為了避免這個問題,有了如下平滑加權隨機算法。每個服務器有兩個加權,一個是靜態加權,另一個為動態加權。動態加權初始化為0。在每次迭代時,動態加權疊加上靜態加權,然後根據這個值從服務其列表中選出最大的服務器。在本次迭代結束,被選出的服務器的動態加權要減去總的加權和。仍然以上面的情況為例。

加權和為:5+3+2=10

靜態加權為:A 5,B 3,C 2

初始動態加權:A 0, B 3,C 2

迭代情況如下:

算法:加權輪詢算法

迭代情況


分享到:


相關文章: