六種常見負載均衡算法
今天我們來聊聊常見的負載均衡算法。
負載均衡將網絡流量或一組任務以某種算法合理分配給各個處理節點,使得節點得到平等的使用,并及時可靠地返回結果給用戶。
負載均衡廣泛應用于各種硬件軟件系統中,比如:
- 根據 IP 地址進行網絡流量負載均衡。在服務進行維護時,可以方便將網絡流量切換到臨時節點或降級的服務上。
- 根據 HTTP 頭信息或請求字段進行應用程序負載均衡,用戶得到響應的時間更短,并且可以提供分層服務,也方便服務擴容時加入新的節點。
- CDN 根據流量的來源,將流量導入相鄰地區的服務器,以獲得更短的響應時間和更高的可用性。
下圖顯示了 6 種常見算法。
一、態算法
1.循環(Round Robin)
客戶端請求按順序發送到不同的服務實例。通常要求服務是無狀態的。這種算法最簡單,但是也無法處理某個節點變慢或者客戶端操作有連續性的情況。
2.粘性循環(Sticky Round Robin)
這是對循環算法的一種改進。如果 Alice 的第一個請求發送到服務 A,那么接下來的請求也會發送到服務 A。這種負載均衡可以確保一個用戶的請求都發往同一個服務節點,適合客戶端操作有連續性的情況。有時候該服務節點上會保存該用戶的一些狀態,避免去后端數據庫查詢。
3.加權循環(Weighted Round Robin)
管理員可以指定每個服務的權重。權重高的服務會比其他服務處理更多請求。
4.散列(IP/URL Hash)
該算法對傳入請求的 IP 或 URL 應用哈希函數。根據哈希函數的結果將請求路由到相關服務。
二、動態算法
5.最少連接(Least Connections)
新請求會發送到并發連接最少的服務節點。
6.響應時間最少(Least Time)
新請求會發送到響應時間最快的服務節點。這樣,某個服務節點變慢就不會阻塞后續請求處理了。