負載均衡原理最全詳解 -萬字圖文總結-

大家好,我是 mikechen。

負載均衡是大型架構的關鍵技術,也是大廠重點考察方向,下面我就全面來詳解負載均衡原理 @mikechen

負載均衡

負載均衡,全稱是 Load Balancing,很多時候我們簡稱 “LB”,它可以在多個服務器、或其他資源之間,分配工作負載。

如下圖所示:

通過增加服務器數量,比如:上圖的 tomcat-node1、tomcat-node2、tomcat-node3... 等服務器。

然後通過 Nginx 負載均衡技術,來有提高系統的處理能力、和可靠性,這就是典型的負載均衡。

負載均衡原理

客戶端的請求,首先到達負載均衡器,然後負載均衡器根據**:調度算法,**將請求分發到不同的服務器上。

如下圖所示:

這裏的 “調度算法”,典型的有:輪詢 (Round Robin)、加權輪詢 (Weighted Round Robin)、最小連接數 (Least Connections)... 等等。

輪詢 (Round Robin)

輪詢算法:是最簡單的一種負載均衡算法,它將請求按順序分配給每一個服務器,循環進行。

優點

實現簡單;適用於服務器性能相近的情況。

缺點

未考慮服務器當前的負載和處理能力,不適用於服務器性能差異較大的場景。

應用:

適用於性能相近的服務器。

加權輪詢 (Weighted Round Robin)

加權輪詢算法:在輪詢的基礎上,爲每個服務器分配一個權重,權重越高的服務器接收的請求越多。

如下圖所示:

負載均衡器按照設定的權重值,將客戶端的請求依次分發給後端服務器,權重大的服務器在每輪輪詢中接收的請求更多。

還是,還是舉一個例子:

在這種情況下,負載均衡器會按照以下順序分發 10 個請求:A, A, A, A, A, B, B, B, C, C。

加權輪詢,適用於以下場景:

系統中包含不同性能的服務器,需要根據其處理能力分配不同數量的請求。

最小連接數 (Least Connections)

優先將請求分配給當前連接數最少的服務器,適用於長連接應用。

如下圖所示:

例如,假設有三臺服務器 A、B、C,當前連接數分別爲 3、5、2。

當一個新請求到達時,該請求將被分配給服務器 C,因爲它的活動連接數最少。

最少連接算法,適用於以下場景:

  1. 長連接應用:如數據庫連接、視頻流媒體、聊天服務... 等需要長時間保持連接的應用,在這些場景中,最少連接算法能較好地平衡負載;

  2. 性能異構的服務器:當服務器性能差異不大,但負載波動較大時,最少連接算法能動態調整負載分配,避免某些服務器過載;

  3. 需要高實時性負載均衡的應用:如實時遊戲、在線交易...... 等需要快速響應的應用,通過最少連接算法能減少響應時間,提高用戶體驗。

IP 哈希 (IP Hash)

IP 哈希(IP Hash)是一種負載均衡算法,通過對客戶端 IP 地址進行哈希運算,將請求分配到特定的服務器。

負載均衡器使用一個哈希函數,將客戶端的 IP 地址轉換爲一個整數值,根據哈希值對服務器數量取模,將客戶端請求分配給計算得到的服務器。

如下圖所示:

假設有:三臺服務器:Server A、Server B、Server C,客戶端 IP 地址是:192.168.0.1。

假如,哈希函數計算結果是:12345。

取模運算:12345 % 3 = 0,故請求分配給 Server A。

同一客戶端 IP 地址的請求總是分配給相同的服務器,非常適合需要保持會話狀態的應用。

負載均衡分類

負載均衡根據工作在網絡協議棧中的不同層次,可以分爲:二層(數據鏈路層)、三層(網絡層)、四層(傳輸層),以及七層(應用層)負載均衡。

如下圖所示:

1)二層負載均衡(數據鏈路層)

二層負載均衡工作在 OSI 模型的第二層,即數據鏈路層。

它通常基於 MAC 地址進行流量分發,利用交換機、或橋接器將數據包分發到不同的服務器。

主要用於小型局域網(LAN),在廣域網(WAN)環境... 中應用受限。

2)三層負載均衡(網絡層)

三層負載均衡工作在 OSI 模型的第三層,即網絡層,它基於 IP 地址進行流量分發。

3)四層負載均衡(傳輸層)

四層負載均衡工作在 OSI 模型的第四層,即傳輸層,它基於 TCP/UDP 協議,通過分析 IP 地址、和端口號進行流量分發。

常見的四層負載均衡器有:硬件設備(如 F5)、和軟件實現(如 HAProxy)。

4)七層負載均衡(應用層)

七層負載均衡工作在 OSI 模型的第七層,即應用層,它基於 HTTP/HTTPS 等應用層協議,通過分析 URL、Cookie、HTTP 頭信息等進行流量分發。

常見的七層負載均衡器有:Nginx、Apache、HAProxy...... 等。

每種負載均衡技術都有其特定的優勢和侷限性,選擇適合的負載均衡方案需要根據具體的應用需求、網絡環境和系統架構進行綜合考慮。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/8xSgH-yT8UWOYriAZr3plA