數據結構和算法 負載均衡算法
目錄
負載均衡的介紹
無狀態調度-輪詢法
無狀態調度-源地址哈希法
無狀態調度-輪詢|隨機加權法
有狀態調度-動態鏈接法
負載均衡的介紹
在分布式系統中,多臺服務器同時提供一個服務,並統一到服務配置中心進行管理,消費者通過查詢服務配置中心,獲取到服務的地址列表,需要選中其中一臺發起RPC調用(關於如何選中,取決於復制均衡算法)
無狀態調度:不管後臺服務器的具體的情況按照某個確定規則進行操作
有狀態調度:根據後臺服務器的具體進行操作
無狀態調度-輪詢法
定義 將請求按順序輪流分配到後臺服務器上,均衡的對每一臺服務器,而不關心服務器實際的連接和當前的系統負載
優點 算法簡單,無需記錄當前所有連接的狀態
應用場景 服務器組中所有服務器都有相同的軟硬件配置並且平均服務請求相對均衡的情況
無狀態調度-隨機法
定義 通過系統隨機函數,根據後臺服務器列表的大小值來隨機選取其中一臺返回(或者給後臺服務器標號,隨機選取一臺)
註意 隨著調用量增大,實際效果接近輪詢法
無狀態調度-源地址哈希法
定義 根據服務消費者請求客戶端的IP地址,通過哈希函數計算得到一個哈希值,將此哈希值和服務器列表的用該數值對服務器列表的大小進行取模運算,得到的結果便是客戶端要訪問的服務器的序號
優點 相同的IP客戶端,如果服務器列表不變,將映射到同一個後臺服務器進行訪問
無狀態調度-輪詢|隨機加權法
定義 不同的後臺服務可能機器的配置和當前系統的負載並不相同,因此它們的抗壓能力也不一樣,配置高,負載低的機器分配更高的權重,使其能處理更多的請求
有狀態調度-動態鏈接法
定義 根據後端服務器當前的連接情況,動態的選取其中當前積壓連接數最小的一臺服務器來處理當前請求,盡可能的提高後臺服務器利用率,將負載合理地分流到每一臺服務器
註意 可以根據"最小連接","響應時間" 或其它辦法來動態調節
數據結構和算法 負載均衡算法