常用負載均衡詳解(圖文總結)

01 

介紹

在互聯網場景下,負載均衡(Load Balance)是分佈式系統架構設計中必須考慮的一個環節,它通常是指將負載流量(工作任務、訪問請求)平衡、分攤到多個操作單元(服務器、組件)上去執行的過程。
目的在於提供負載配比,解決性能、單點故障(高可用)和擴展性(水平伸縮)等問題。
圖片
以上圖爲例,隨着互聯網的興盛,類似淘寶、京東等網站的訪問量逐年提升。原先的單臺服務或者單集羣模式已經遠不能滿足需求了,這時候就需要橫向擴展多臺服務或者多個集羣來分攤壓力,達到提升系統吞吐的能力,這就是著名的分治理論。
但服務器增加了,他們之間的流量負載也必須有一個組件來管控,這就是負載均衡的作用。負載均衡提供了多種算法策略來滿足不同的業務負載需求,下面我們詳細來講解下。

02

幾種常見的負載均衡策略

2.1 輪詢(Round Robin)

RR 輪詢,即 Round Robin。按照請求的順序輪流分配到不同的服務器,循環往復。這種策略適用於服務器性能相近的情況,可以平均分配負載。但如果某個服務器性能較差或者偶發故障,會影響整個系統的性能和穩定性。
如下圖所示:
圖片

2.2 按照權重輪詢(Weighted Round Robin)

即加權輪詢,給不同的服務器分配不同的權重,根據權重比例來決定分配請求的數量。這種策略適用於後端服務器性能不均的情況,可以根據實際情況靈活調整。使得性能更好的服務器能夠處理更多的請求,從而提高整個系統的處理效率。
如下圖所示:
圖片

2.3 IP 哈希(IP Hash)

根據客戶端的 IP 地址計算哈希值,將請求分配給特定的服務器,保證相同 IP 的客戶端請求始終發送到同一臺服務器。這種策略適用於需要保持客戶端會話一致性的場景,例如需要維護用戶 session 的 Web 應用。
如下圖所示:
圖片

需要注意的是,雖然 IP 哈希算法可以確保來自同一 IP 地址的請求被髮送到同一臺服務器,這在一些需要保持會話一致性的場景中很有用,但它也可能導致負載不均衡。例如,如果某個 IP 地址發送了大量的請求,那麼處理這些請求的服務器可能會過載,而其他服務器可能處於空閒狀態。因此,在使用 IP 哈希算法時,需要仔細考慮其適用性和潛在的風險。需要對極端情況進行評估,筆者就曾經踩過坑。

2.4 最少連接(Least Connections)

將請求分配給當前連接數最少的服務器,以實現負載均衡。這種策略適用於處理長連接請求的場景,如 WebSocket、FTP 服務。通過記錄每臺服務器當前正在處理的連接數,將新請求分配給連接數最少的服務器,可以有效避免某些服務器過載導致性能下降的情況。
如下圖所示:
圖片

2.5 最短響應時間(Least Response Time)

短響應時間(Least Response Time)算法在負載均衡領域中被廣泛應用。這種策略適用於對響應時間有嚴格要求的應用場景。通過實時監測每臺服務器的響應時間,將請求分配給響應時間最短的服務器,可以確保用戶獲得最快的響應,提升用戶體驗。
如下圖所示:
圖片

同樣,這種算法也有自己的優缺點:

優點

1、提高用戶體驗:通過選擇響應時間最短的服務器來處理請求,可以顯著減少用戶的等待時間,提高整體的用戶體驗。
2、動態負載均衡:該算法能夠實時地根據服務器的響應時間來調整負載分配,確保每臺服務器都能根據其實際性能來處理相應數量的請求。
3、處理高峯期流量:在流量高峯期,最短響應時間算法可以確保請求被迅速處理,避免系統擁堵和延遲。

缺點

1、計算開銷:爲了確定每臺服務器的響應時間,系統需要不斷地進行監測和計算,這可能會增加額外的系統開銷。
2、瞬時波動:由於該算法主要依賴於實時的響應時間,因此可能會受到瞬時波動的影響。例如,如果某臺服務器在某一時刻由於某種原因(如臨時的高負載)響應時間變長,它可能會被暫時排除在負載均衡之外,即使其實際性能可能仍然優於其他服務器。
3、可能忽略其他性能指標:最短響應時間算法主要關注響應時間,可能忽略了其他重要的性能指標,如服務器的處理能力、內存佔用等。在某些情況下,這可能導致負載分配不夠均衡。

03

總結

本文介紹了常見的幾種負載均衡策略,此外,還有一些其他策略,如:

在選擇負載均衡策略時,需要根據實際應用場景、服務器性能、網絡狀況等因素進行綜合考慮,以達到最佳的負載均衡效果。

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