集羣負載均衡算法原理

最近打算往互聯網方向發展,研究了下集羣的負載均衡。其實早就應該去了解學習了。如有理解不到位的地方,還望各大神指出。

負載均衡算法是集羣在調度時,選擇具體調度和分發方式的邏輯。

目前流行和常用的算法有:輪詢算法,Hash算法,Session,最小連接數,最大空閒等。

1、輪詢算法:

實現方式:把每一次的用戶請求,按順序循環分配給集羣內部的一臺服務器。優點是算法簡潔,無狀態。


2、權重輪詢算法

由於服務器的處理能力不同,可以再給服務器加權。也就是權重輪詢算法。


3、Hash算法

一般就是將請求中的某項數據做hash運算,然後根據集羣的服務器總數n取模,根據取模後的值分配服務器。

一般可以根據請求時間,請求來源的ip等來做散列運算。

java中哈希值的算法:

String s = "hello";
int hash = s.hashCode();


4、一致性Hash算法

http://blog.csdn.net/cywosp/article/details/23397179/


5、Session算法

此算法是解決WEB集羣會話問題最簡單的方式。

與輪詢算法類似,當用戶發起請求時檢查,若該請求的SessionID是首次發起的請求,則根據SessionID使用輪詢算法選擇服務器,當再次發起同一sessionID的請求時,直接轉發給之前選擇的服務器。使得服務器的緩存得到更好的利用。


6、最少連接數請求,最大空閒請求

如ftp,雲服務等,若使用前面的幾種算法,可能會由於客戶端的連接時間不同,導致部分服務器連接數過多,壓力過大。

最小連接數算法,根據服務器當前的連接情況,把請求轉發給當前連接數少的服務器。

最大空閒請求,也是類似。可以根據服務器性能的不同做加權。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章