回覆列表
-
1 # 會點程式碼的大叔
-
2 # kid7157887
輪詢
加權輪詢
hash粘滯,根據url,請求引數等條件進行hash
根據資源使用情況排程
隨機
加權隨機
-
3 # JAVA前線
1 輪詢法
Round Robin:負載均衡器將請求依次並按順序分發給後端伺服器
2 隨機法Random:負載均衡器將請求隨機分發到後端伺服器,隨著請求量資料的增大,其效果近似於將請求平均分發到後端伺服器
3 加權輪詢法Weight Round Robin:輪詢法同第1點,加權是指根據後端伺服器的能力和負載情況,給後端伺服器一個權重值,伺服器權重值越大,請求分發到該伺服器機率就越大
4 加權隨機法Weight Random:隨機法同第2點,加權法同第3點
5 源地址雜湊法Hash:負載均衡器對客戶端IP地址做雜湊,用雜湊值和伺服器數量取模,取模得到的值就是分發的伺服器序號
6 最小連結數法Least Connections:負載均衡器根據後端伺服器當前處理請求的數量,動態選擇一個當前處理請求最少的伺服器
-
4 # Next科技
負載均衡排程演算法也叫負載均衡方法有很多種,下面以使用比較廣的nginx為例說說軟體負載均衡的排程演算法:
輪詢nginx預設的排程演算法,按照時間順序逐一分配後臺伺服器
加權輪詢在server後加weigth,weight值越高,後臺伺服器分配機率越大,下圖是說ip為102的後臺服務分配機率是ip為101後臺服務的兩倍
ip_hash按照訪問ip的hash分配,增加ip_hash關鍵字,同一ip訪問相同的後臺服務
url_hash按照訪問url的hash分配,增加url_hash關鍵字,同一url訪問相同的後臺服務
least_hash按照最少連線數方式分配,增加least_conn關鍵字,哪個後臺服務連線數少就分配哪個
fair按照最短響應時間分配,增加fair關鍵字,響應時間短的後臺服務優先分配
常見的負載均衡排程演算法,向大家介紹介紹。
01. 輪詢法輪詢法就是按照順序把請求輪流分配到每臺伺服器上;
輪訓法簡單高效,易於水平擴充套件,不過因為只求平均,不關心每臺服務實際的負載;所以如果某一臺伺服器效能不好,極有可能產生木桶效應。
02. 隨機法隨機分配請求到每臺伺服器上,如果請求數量足夠多,從機率學角度看,實際效果會接近平均分配。
03. 隨機輪詢法隨機法和輪詢法相結合,隨機找到一個伺服器作為起點,然後開始輪詢傳送請求。(隨機只體現在尋找第一個伺服器的時候,剩餘的工作和輪訓法一樣)
04. 源地址雜湊法對客戶端的 IP 地址進行雜湊運算得到一個值 X,伺服器數量為 N,透過 X % N 的結果,決定訪問哪臺伺服器。
地址雜湊法可以讓相同的 IP 每次都落在同一臺伺服器上,這樣不需要考慮 Session 共享的問題,但是可能會導致流量的分佈不均勻,並且當某一臺伺服器出現故障,會導致這個伺服器上的客戶端無法使用,無法保證叢集的高可用。
05. 加權輪詢法加權輪詢法是對輪詢法的一個改進,因為每臺伺服器的配置不一樣,所以它們的抗壓能力也不一樣,配置高的機器可以分配更高的權重,這樣就可以處理更多的請求;
加權輪詢法將機器的效能也納入考量範圍,叢集效能可以發揮到最大。
06. 加權隨機法和加權輪詢法類似;這裡就不再贅述了。
最小連線數法根據實時狀態變化進行調整,最大限度地利用每一臺機器的資源,提高叢集整體的可用性;不過複雜度也高,需要計算每臺伺服器的連線數量。
和最小連線數法類似,最快響應速度法也是動態調整的,控制粒度更細,能者多勞;同時複雜度也高,需要計算每臺伺服器的響應速度。
常見的負載均衡演算法就是這些,比如使用 Nginx 做負載均衡的話,軟體預設使用的是輪訓法。