負載均衡原理最全詳解 -萬字圖文總結-
大家好,我是 mikechen。
負載均衡是大型架構的關鍵技術,也是大廠重點考察方向,下面我就全面來詳解負載均衡原理 @mikechen
負載均衡
負載均衡,全稱是 Load Balancing,很多時候我們簡稱 “LB”,它可以在多個服務器、或其他資源之間,分配工作負載。
如下圖所示:
通過增加服務器數量,比如:上圖的 tomcat-node1、tomcat-node2、tomcat-node3... 等服務器。
然後通過 Nginx 負載均衡技術,來有提高系統的處理能力、和可靠性,這就是典型的負載均衡。
負載均衡原理
客戶端的請求,首先到達負載均衡器,然後負載均衡器根據**:調度算法,**將請求分發到不同的服務器上。
如下圖所示:
這裏的 “調度算法”,典型的有:輪詢 (Round Robin)、加權輪詢 (Weighted Round Robin)、最小連接數 (Least Connections)... 等等。
輪詢 (Round Robin)
輪詢算法:是最簡單的一種負載均衡算法,它將請求按順序分配給每一個服務器,循環進行。
優點:
實現簡單;適用於服務器性能相近的情況。
缺點:
未考慮服務器當前的負載和處理能力,不適用於服務器性能差異較大的場景。
應用:
適用於性能相近的服務器。
加權輪詢 (Weighted Round Robin)
加權輪詢算法:在輪詢的基礎上,爲每個服務器分配一個權重,權重越高的服務器接收的請求越多。
如下圖所示:
負載均衡器按照設定的權重值,將客戶端的請求依次分發給後端服務器,權重大的服務器在每輪輪詢中接收的請求更多。
還是,還是舉一個例子:
-
服務器 A 的權重爲 5
-
服務器 B 的權重爲 3
-
服務器 C 的權重爲 2
在這種情況下,負載均衡器會按照以下順序分發 10 個請求:A, A, A, A, A, B, B, B, C, C。
加權輪詢,適用於以下場景:
系統中包含不同性能的服務器,需要根據其處理能力分配不同數量的請求。
最小連接數 (Least Connections)
優先將請求分配給當前連接數最少的服務器,適用於長連接應用。
如下圖所示:
例如,假設有三臺服務器 A、B、C,當前連接數分別爲 3、5、2。
當一個新請求到達時,該請求將被分配給服務器 C,因爲它的活動連接數最少。
最少連接算法,適用於以下場景:
-
長連接應用:如數據庫連接、視頻流媒體、聊天服務... 等需要長時間保持連接的應用,在這些場景中,最少連接算法能較好地平衡負載;
-
性能異構的服務器:當服務器性能差異不大,但負載波動較大時,最少連接算法能動態調整負載分配,避免某些服務器過載;
-
需要高實時性負載均衡的應用:如實時遊戲、在線交易...... 等需要快速響應的應用,通過最少連接算法能減少響應時間,提高用戶體驗。
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