1、隨機演算法:
負載均衡方法隨機的把負載分配到各個可用的伺服器上,通過隨機數生成演算法選取乙個伺服器,然後把連線傳送給它。
同樣乙個請求一會落到機器a,一會落到機器b上,cache會被頻繁淘汰,使得cache命中率低。
2、輪詢演算法:
輪詢演算法按順序把每個新的連線請求分配給下乙個伺服器,最終把所有請求平分給所有的伺服器。輪詢演算法在大多數情況下都工作的不錯,但是如果負載均衡的裝置在處理速度、連線速度和記憶體等方面不是完全均等,那麼效果就會不好。當然cache命中率也不高
3、加權輪詢演算法:
每個機器接受的連線數量是按權重比例分配的。這是對普通輪詢演算法的改進,比如你可以設定:第三台機器的處理能力是第一台機器的兩倍,那麼負載均衡器會把兩倍的連線數量分配給第3臺機器。
4、動態輪詢演算法:
類似於加權輪詢,但是,權重值基於對各個伺服器的持續監控,並且不斷更新。這是乙個動態負載均衡演算法,基於伺服器的實時效能分析分配連線,比如每個節點的當前連線數或者節點的最快響應時間等。
5、最快響應演算法:
平衡器記錄自身到每乙個集群節點的網路響應時間,並將下乙個到達的連線請求分配給響應時間最短的節點;
6、最少連線演算法:
平衡器紀錄目前所有活躍連線,把下乙個新的請求發給當前含有最少連線數的節點。
7、雜湊雜湊演算法:
雜湊法也叫雜湊法(hash),通過單射不可逆的hash函式,按照某種規則將網路請求發往集群節點,將具有相同源位址的資料報發給同一伺服器。以後對相同的請求, 相同的伺服器組,計算出來的hash結果相同,從而達到hash分布的效果。
根據不同的均衡要求選擇不同的均衡演算法
當然:對於雜湊雜湊演算法我們
計算全部伺服器的idx_key=hash(query_key+server_idx),其中計算得到idx_key最大的server_idx就是需要的idx。
假設開始3台後端伺服器,請求用標誌串 req = "abcd" 來標誌,伺服器用 s1, s2, s3來標誌, 那麼,通過對 req + sx 合併起來計算簽名就可以對每個伺服器得到乙個數值:
(req = "abcd" + s1) = k1
(req = "abcd" + s2) = k2
(req = "abcd" + s3) = k3
計算的方法可以使用crc,也可以使用md5,目的的得到乙個*雜湊*的數字,這樣在k1,k2,k3中 必定有乙個最大的數值,假設是k2,那麼可以將請求req扔給s2,這樣,以後對相同的請求, 相同的伺服器組,計算出來的結果必定是k2最大,從而達到hash分布的效果。
巧妙的地方在於,新增或者刪除一台伺服器的時候,不會引起已有伺服器的cache大規模失效, 假設新增一台伺服器s4,那麼對s1,s2,s3計算的k值都完全相同,那麼對s4可以計算得到乙個新值k4,如果計算k的演算法足夠雜湊,那麼原先計算到 s1,s2,s3的請求,理論上都會有1/4的請求新計算得到的k4比原先的k大, 那麼這1/4的請求會轉移到s4,從而新增的s4伺服器會負擔1/4的請求,原先的s1,s2,s3也只會負擔原先的3/4。
cache命中率最高,並且新增和刪除(考慮到伺服器宕機的情況)伺服器的影響最小
負載均衡常用的演算法
1 輪詢 將所有請求,依次分發到每台伺服器上,適合伺服器硬體相同的場景。1 優點 伺服器請求數目相同 2 缺點 伺服器壓力不一樣,不適合伺服器配置不同的情況 2 隨機 請求隨機分配到各台伺服器上。1 優點 使用簡單 2 缺點 不適合機器配置不同的場景 3 最少鏈結 將請求分配到連線數最少的伺服器上 ...
常用負載均衡演算法 nginx負載均衡實現方法
1 輪詢法 將請求按順序輪流地分配到後端伺服器上,它均衡地對待後端的每一台伺服器,而不關心伺服器實際的連線數和當前的系統負載。2 隨機法 通過系統的隨機演算法,根據後端伺服器的列表大小值來隨機選取其中的一台伺服器進行訪問。由概率統計理論可以得知,隨著客戶端呼叫服務端的次數增多,其實際效果越來越接近於...
nginx常用負載均衡演算法
nginx常用負載均衡演算法有6種 nginx本身支援4種 輪詢 round robin 加權輪詢 weight round robin ip hash,最小連線 least conn 第三方模組,支援2種 最快響應時間 fair url hash 1.輪詢 round robin 輪詢,依次將請求...