幾種常見的負載均衡演算法的工作原理

2021-10-19 15:16:40 字數 1735 閱讀 1224

在分布式系統設計當中,一般會對服務進行集群部署,集群中的多個節點提供相同的服務,所以可以將對該服務的請求分發給集群的任意乙個節點來處理。為了將請求合理分發給集群的節點進行處理,即既要保證集群的每個節點都能夠分配到請求,又能夠實現不會給某個節點分配過多請求,導致超過節點處理能力,所以需要基於一定的規則來進行請求分發,這個規則也稱為負載均衡演算法。以下詳細分析幾種常見的負載均衡演算法的工作原理。

最快響應時間負載均衡演算法也是一種智慧型、動態的負載均衡演算法,與最少連線數類似,也是根據集群節點的負載情況來將請求合理分發到各個節點,實現集群的整體穩定性和機器資源的重複利用。與最少連線數不同的是,最快響應時間是基於請求與響應的時間延遲來衡量機器的負載情況的,即將請求分發給當前處理請求最快,負載均衡器從該節點獲取響應延遲最小的節點,而響應時間慢的節點則分配更少的請求。

最少連線數負載均衡演算法是一種智慧型、動態的負載均衡演算法,主要是根據集群的每個節點的當前連線數來決定將請求**給哪個節點,即每次都將請求**給當前存在最少併發連線的節點。

這種負載均衡演算法的好處是可以根據集群節點的負載情況來進行請求的動態分發,即機器效能好,處理請求快,積壓請求少的節點分配更多的請求,反之則分配更少的請求,從而實現集群的整體穩定性和將請求合理分發到每乙個節點,避免某個節點因為處理超過自身所能承受的請求量而導致宕機或者響應過慢。

雜湊演算法主要將對請求的ip位址或者url計算乙個雜湊值,然後與集群節點的數量進行取模來決定將請求分發給哪個集群節點。這種雜湊演算法實現簡單並且在集群節點數量不變的情況下,能夠將相同ip位址的請求分發給相同的機器處理。但是如果集群節點發生變化,則會對集群的所有節點進行影響,如可能導致某個機器效能較低的節點突然接收到大量請求,從而影響集群的整體穩定性。

一致性雜湊演算法主要是基於一致性雜湊函式來實現,一致性雜湊函式會將給定的引數對映到由2的32次方個點組成的環形槽的某個槽點上。

在使用一致性雜湊函式來進行負載均衡時,首先將集群的多個節點雜湊到該環形槽的對應的某個槽點上,然後當負載均衡器接收到請求時,使用該請求的ip位址或者url來作為一致性雜湊函式的引數,生成該請求對應環形槽的某個槽點,最後從順時針方向找到第乙個位於該環形槽的集群節點,則將該請求**給這個集群節點處理。

由一致性雜湊演算法的實現原理可知,如果集群節點的個數不變,則相同ip位址或者相同url的請求都會**到相同的集群節點來處理;如果集群節點數量發生變化,則只會影響該增加或者刪除的節點按順時針方向的後乙個節點,所以能夠很方便的實現集群的拓容和縮容。

輪詢演算法主要是將客戶端傳送到負載均衡器的請求依次輪流地**給服務集群的某個節點,而不需要考慮每個集群節點當前的連線數和工作負載以及該節點的機器效能。該演算法的好處是實現簡單,每個集群節點平均分擔所有的請求,缺點是當集群節點對應的機器存在效能差異時,可能會出現效能低的機器節點處理請求慢,而效能好的機器節點則存在空閒的系統資源沒有充分利用,所以一般用作集群所有節點的機器效能接近的情況。

加權演算法主要是根據集群的節點對應機器的效能的差異,給每個節點設定乙個權重值,其中效能好的機器節點設定乙個較大的權重值,而效能差的機器節點則設定乙個較小的權重值。然後可以繼續基於輪詢或者隨機的演算法來選取乙個節點來處理請求,只是權重大的節點能夠被更多的選中。實現原理類似於在乙個陣列中選擇乙個元素,而權重值就是對應機器節點在陣列中重複出現的次數,如兩個節點,其中a節點的權重值為3,b節點的權重值為1,則陣列的組成為:[a, a, a, b],所以不管是輪詢還是隨機選取都是a選擇的次數更多

隨機演算法主要是隨機選取集群中的某個節點來處理該請求,由概率論的知識可知,隨著請求量的變大,隨機演算法會逐漸演變為輪詢演算法,即集群各個節點會處理差不多數量的請求。所以優缺點也是與輪詢演算法類似。

幾種常見的負載均衡

http重定向 dns網域名稱解析 反向 ip層負載均衡 鏈路層的負載均衡 http重定向伺服器就是乙個普通的伺服器,當使用者訪問時,其會根據一定的演算法得到伺服器集群的乙個真實伺服器的ip位址,將其放在http響應頭中,響應狀態碼為 302 當使用者瀏覽器接收到這個響應時,會將得到的真實伺服器的i...

幾種常見的負載均衡

1 http重定向 http重定向伺服器就是乙個普通的伺服器,當使用者訪問時,其會根據一定的演算法得到伺服器集群的乙個真實伺服器的ip位址,將其放在http響應頭中,響應狀態碼為 302 當使用者瀏覽器接收到這個響應時,會將得到的真實伺服器的ip位址提出並重新訪問。如上圖所示,當使用者訪問網域名稱時...

常見的負載均衡演算法

前不久公司有個需求是任務需要按照權重分配來選擇,當時就想到負載均衡演算法裡的加權隨機法,因此對常見的負載均衡演算法做個總結。輪詢就是將請求按順序輪流地分配到後端伺服器上,它均衡地對待後端每一台伺服器,而不關心伺服器實際的連線數和當前的系統負載。serverweightmap 表示伺服器位址和權重的對...