06.04 負載均衡算法實現方式

負載均衡算法實現方式

輪詢(Round Robin)法

1.獲取ip列表

2.根據ip在list的中pos順序獲取,server = keyList.get(pos);(使得同一時刻只能有一個線程可以修改pos的值)

隨機(Random)法

1.獲取ip列表

2.Random的nextInt方法取0~keyList.size()區間的一個隨機值 int randomPos = random.nextInt(keyList.size());

源地址哈希(Hash)法

獲取客戶端訪問的IP地址值,通過哈希函數計算得到一個數值,用該數值對服務器列表的大小進行取模運算,得到的結果便是要訪問的服務器的序號,結果便是選用的服務器在服務器列表中的索引值。

1.獲取遠程ip,計算hash值

2.取模計算該hash值得pos 序列號(保證了相同客戶端IP地址將會被哈希到同一臺後端服務器)

加權輪詢(Weight Round Robin)法

在獲取服務器地址之前增加了一段權重計算的代碼,根據權重的大小,將地址重複地增加到服務器地址列表中,權重越大,該服務器每輪所獲得的請求數量越多。

1.根據權重比例重複添加到ip列表中

for (int i = 0; i < weight; i++)

serverList.add(server);

2.按照pos輪詢列表。server = serverList.get(pos);

加權隨機(Weight Random)法

原理同加權和隨機一樣

1.1.根據權重比例重複添加到ip列表中

for (int i = 0; i < weight; i++)

serverList.add(server);

2.int randomPos = random.nextInt(serverList.size());

最小連接數(Least Connections)法

以後端服務器的視角來觀察系統的負載,而非請求發起方來觀察。

根據後端服務器當前的連接情況,動態地選取其中當前積壓連接數最少的一臺服務器來處理當前請求,儘可能地提高後端服務器的利用效率,將負載合理地分流到每一臺機器。

1.需要後端服務器定時上報連接情況

2.根據連接情況選擇最小連接

更多內容請關注每日編程,每天進步一點。


分享到:


相關文章: