負載均衡算法

常見的有:

1.輪詢

客戶端發送到負載均衡器的請求依次輪流地轉發給服務集羣的某個節點,而不需要考慮每個集羣節點當前的連接數和工作負載以及該節點的機器性能。

該算法的好處是實現簡單,每個集羣節點平均分擔所有的請求,缺點是當集羣節點對應的機器存在性能差異時,可能會出現性能低的機器節點處理請求慢,而性能好的機器節點則存在空閒的系統資源沒有充分利用,所以一般用作集羣所有節點的機器性能接近的情況 

2.隨機

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

3.加權輪詢和加權隨機

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

4.哈希與一致性哈希

哈希算法主要將對請求的IP地址或者URL計算一個哈希值,然後與集羣節點的數量進行取模來決定將請求分發給哪個集羣節點。

這種哈希算法實現簡單並且在集羣節點數量不變的情況下,能夠將相同IP地址的請求分發給相同的機器處理。但是如果集羣節點發生變化,則會對集羣的所有節點進行影響,如可能導致某個機器性能較低的節點突然接收到大量請求,從而影響集羣的整體穩定性。 

  • 一致性哈希算法主要是基於一致性哈希函數來實現,一致性哈希函數會將給定的參數映射到由2的32次方個點組成的環形槽的某個槽點上。
  • 在使用一致性哈希函數來進行負載均衡時,首先將集羣的多個節點哈希到該環形槽的對應的某個槽點上,然後當負載均衡器接收到請求時,使用該請求的IP地址或者URL來作爲一致性哈希函數的參數,生成該請求對應環形槽的某個槽點,最後從順時針方向找到第一個位於該環形槽的集羣節點,則將該請求轉發給這個集羣節點處理。
  • 由一致性哈希算法的實現原理可知,如果集羣節點的個數不變,則相同IP地址或者相同URL的請求都會轉發到相同的集羣節點來處理;如果集羣節點數量發生變化,則只會影響該增加或者刪除的節點按順時針方向的後一個節點,所以能夠很方便的實現集羣的拓容和縮容。

5.最少連接數

 

  • 最少連接數負載均衡算法是一種智能、動態的負載均衡算法,主要是根據集羣的每個節點的當前連接數來決定將請求轉發給哪個節點,即每次都將請求轉發給當前存在最少併發連接的節點。
  • 這種負載均衡算法的好處是可以根據集羣節點的負載情況來進行請求的動態分發,即機器性能好,處理請求快,積壓請求少的節點分配更多的請求,反之則分配更少的請求,從而實現集羣的整體穩定性和將請求合理分發到每一個節點,避免某個節點因爲處理超過自身所能承受的請求量而導致宕機或者響應過慢。

6.最快響應時間

  • 最快響應時間負載均衡算法也是一種智能、動態的負載均衡算法,與最少連接數類似,也是根據集羣節點的負載情況來將請求合理分發到各個節點,實現集羣的整體穩定性和機器資源的重複利用。與最少連接數不同的是,最快響應時間是基於請求與響應的時間延遲來衡量機器的負載情況的,即將請求分發給當前處理請求最快,負載均衡器從該節點獲取響應延遲最小的節點,而響應時間慢的節點則分配更少的請求。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章