1. 程式人生 > >【轉】負載均衡的基本演算法

【轉】負載均衡的基本演算法

1、隨機:負載均衡方法隨機的把負載分配到各個可用的伺服器上,通過隨機數生成演算法選取一個伺服器,然後把連線傳送給它。雖然許多均衡產品都支援該演算法,但是它的有效性一直受到質疑,除非把伺服器的可執行時間看的很重。

2、輪詢:輪詢演算法按順序把每個新的連線請求分配給下一個伺服器,最終把所有請求平分給所有的伺服器。輪詢演算法在大多數情況下都工作的不錯,但是如果負載均衡的裝置在處理速度、連線速度和記憶體等方面不是完全均等,那麼效果會更好。

3、加權輪詢:該演算法中,每個機器接受的連線數量是按權重比例分配的。這是對普通輪詢演算法的改進,比如你可以設定:第三臺機器的處理能力是第一臺機器的兩倍,那麼負載均衡器會把兩倍的連線數量分配給第3臺機器。

4、動態輪詢:類似於加權輪詢,但是,權重值基於對各個伺服器的持續監控,並且不斷更新。這是一個動態負載均衡演算法,基於伺服器的實時效能分析分配連線,比如每個節點的當前連線數或者節點的最快響應時間等。

5、最快演算法:最快演算法基於所有伺服器中的最快響應時間分配連線。該演算法在伺服器跨不同網路的環境中特別有用。

6、最少連線:系統把新連線分配給當前連線數目最少的伺服器。該演算法在各個伺服器運算能力基本相似的環境中非常有效。

7、觀察演算法:該演算法同時利用最小連線演算法和最快演算法來實施負載均衡。伺服器根據當前的連線數和響應時間得到一個分數,分數較高代表性能較好,會得到更多的連線。

8、預判演算法:該演算法使用觀察演算法來計算分數,但是預判演算法會分析分數的變化趨勢來判斷某臺伺服器的效能正在改善還是降低。具有改善趨勢的伺服器會得到更多的連線。該演算法適用於大多數環境。

*****************************原文結束******************************************

文章列舉出常用演算法,背景還是使用者多了,單節點承受 不了大量請求,採用叢集,所以才有負載均衡的產生。

上面列舉的演算法對於非持續行演算法介紹較多,還有一種持續性演算法,也是之前學習筆記文章提到的一致性hash。

比如基於請求的IP進行分配。優點就是簡單高效,缺點就是不易於動態更新:比如某IP訪問量突然大漲,導致對應節點容易成為熱點。

演算法只是一塊,還是應該根據叢集的特點進行選擇,相關知識點就是nginx。