5大負載均衡演算法 (原理圖解)

5大負載均衡演算法(原理圖解)-mikechen的互聯網架構

負載均衡,是分散式架構的必備技術,也是進階的必學技術,需要重點掌握。

本文,我將重點詳解負載均衡的5大核心演算法 @mikechen

先來看張圖,下面是一個典型的集群和負載均衡架構圖
5大負載均衡演算法(原理圖解)-mikechen的互聯網架構

一台機器不能承受訪問壓力時,我們大多會通過橫向增加兩台、或者多台伺服器,來共同承擔訪問壓力,來極大的降低後端的訪問壓力,提升用戶的訪問性能。

但是,從一台擴展到多台伺服器後,如何將客戶端的流量、分發到具體的伺服器呢?是通過伺服器 1 、還是伺服器 3 ?

這就涉及到了具體的負載均衡演算法。

1.  輪循

5大負載均衡演算法(原理圖解)-mikechen的互聯網架構

輪詢很容易實現,將請求按順序輪流分配到後台伺服器上,均衡的對待每一台伺服器,而不關心伺服器實際的連接數和當前的系統負載。
適合場景:適合於應用伺服器硬體都相同的情況。

2.  加權輪循

5大負載均衡演算法(原理圖解)-mikechen的互聯網架構
在輪詢的基礎上根據硬體配置不同,按權重分發到不同的伺服器。
適合場景:跟配置高、負載低的機器分配更高的權重,使其能處理更多的請求,而性能低、負載高的機器,配置較低的權重,讓其處理較少的請求。

3.  隨機

5大負載均衡演算法(原理圖解)-mikechen的互聯網架構
通過系統隨機函數,根據後台伺服器列表的大小值來隨機選取其中一台進行訪問。

隨著調用量的增大,客戶端的請求可以被均勻地分派到所有的後端伺服器上,其實際效果越來越接近於平均分配流量到後台的每一台伺服器,也就是輪詢法的效果。

4.  最少連接

5大負載均衡演算法(原理圖解)-mikechen的互聯網架構
記錄每個伺服器正在處理的請求數,把新的請求分發到最少連接的伺服器上,因為要維護內部狀態不推薦。

5.  源地址散列

5大負載均衡演算法(原理圖解)-mikechen的互聯網架構
根據服務消費者請求客戶端的IP地址,通過哈希函數計算得到一個哈希值,將此哈希值和伺服器列表的大小進行取模運算,得到的結果便是要訪問的伺服器地址的序號。

適合場景:根據請求的來源IP進行hash計算,同一IP地址的客戶端,當後端伺服器列表不變時,它每次都會映射到同一台後端伺服器進行訪問。

以上,是對 5 大負載均衡演算法及其原理的解析,對掌握及使用負載均衡,具有一定的參考價值,建議收藏、經常溫顧。

如果覺得有用,請 點贊 轉發 支援下,謝謝。

 

作者簡介

陳睿 | mikechen , 10年+大廠架構經驗,「mikechen 的互聯網架構」系列文章作者,專註互聯網架構技術。

👇「mikechen 的互聯網架構」的更多技術文章合集👇

Java並發 | JVM | MySQL | Spring | Redis | 分散式 | 高並發