負載平衡常用演算法:
1、輪詢(round-robin)
輪詢為負載平衡中較為基礎也較為簡單的演算法,它不需要配置額外參數。假設設定檔中共有 M 台伺服器,演算法遍歷伺服器節點列表,並按節點順序每輪選擇一台伺服器處理請求。當所有節點都被呼叫過一次後,演算法將從第一個節點開始重新一輪遍歷。
特點:
由於演算法中每個請求按時間順序逐一分配到不同的伺服器處理,因此適用於伺服器效能相近的叢集情況,其中每個伺服器承載相同的負載。但對於伺服器效能不同的叢集而言,此演算法容易引發資源分配不合理等問題。
2、加權輪詢
為了避免普通輪詢帶來的弊端,加權輪詢應運而生。在加權輪詢中,每個伺服器會有各自的 weight。一般情況下,weight 的值越大代表該伺服器的效能越好,可以承載更多的請求。在演算法中,客戶端的請求按權值比例分配,當一個請求到達時,優先為其分配權值最大的伺服器。
特點:
加權輪詢可以套用於伺服器效能不等的叢集中,使資源分配更加合理化。
其核心思想是,遍歷各伺服器節點,併計算節點權值,計算規則為 current_weight 與其對應的 effective_weight 之和,每輪遍歷中選出權值最大的節點作為最優伺服器節點。其中 effective_weight 會在演算法的執行過程中隨資源狀況和回應情況而改變。
3、IP 雜湊(IP hash)
ip_hash 依據發出請求的客戶端IP 的hash 值來分配伺服器,該演算法可以保證同IP 發出的請求對應到同一伺服器,或具有相同hash 值的不同IP 會對應到同一伺服器。
特點:
此演算法在一定程度上解決了叢集部署環境下 Session 不共享的問題。
推薦教學:nginx教學
#以上是負載平衡常用演算法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!