負載均衡演算法實現方式

2022-02-02 11:25:04 字數 1114 閱讀 9506

輪詢(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.根據連線情況選擇最小連線

常用負載均衡演算法 nginx負載均衡實現方法

1 輪詢法 將請求按順序輪流地分配到後端伺服器上,它均衡地對待後端的每一台伺服器,而不關心伺服器實際的連線數和當前的系統負載。2 隨機法 通過系統的隨機演算法,根據後端伺服器的列表大小值來隨機選取其中的一台伺服器進行訪問。由概率統計理論可以得知,隨著客戶端呼叫服務端的次數增多,其實際效果越來越接近於...

負載均衡的幾種實現方式

1 http重定向負載均衡。這種負載均衡方案的優點是比較簡單,缺點是瀏覽器需要每次請求兩次伺服器才能拿完成一次訪問,效能較差。2 dns網域名稱解析負載均衡。dns網域名稱解析負載均衡的優點是將負載均衡工作交給dns,省略掉了網路管理的麻煩,缺點就是dns可能快取a記錄,不受 控制。3 反向 負載均...

負載均衡的幾種實現方式

1 http重定向負載均衡。負載均衡的幾種實現方式 這種負載均衡方案的優點是比較簡單,缺點是瀏覽器需要每次請求兩次伺服器才能拿完成一次訪問,效能較差。2 dns網域名稱解析負載均衡。dns網域名稱解析負載均衡的優點是將負載均衡工作交給dns,省略掉了網路管理的麻煩,缺點就是dns可能快取a記錄,不受...