负载均衡(Loadbalance)
在實際項目中,一個服務基本都是集群模式的,也就是多個功能相同的項目在運行,這樣才能承受更高的并發(fā),這時一個請求到這個服務,就需要確定訪問哪一個服務器
?Dubbo框架內部支持負載均衡算法,能夠盡可能的讓請求在相對空閑的服務器上運行
在不同的項目中,可能選用不同的負載均衡策略,以達到最好效果
Dubbo內置的負載均衡策略算法
Dubbo內置4種負載均衡算法
- random loadbalance:隨機分配策略(默認)
- round Robin Loadbalance:權重平均分配
- leastactive Loadbalance:活躍度自動感知分配
- consistanthash Loadbalance:一致性hash算法分配
實際運行過程中,每個服務器性能不同
在負載均衡時,都會有性能權重,這些策略算法都考慮權重問題
1.隨機分配策略
假設我們當前三臺服務器,經過測試它們的性能權重比值為5:3:1
隨機生成隨機數
在那個范圍內讓那個服務器運行
優(yōu)點:
算法簡單,效率高,長時間運行下,任務分配比例準確
缺點:
偶然性高,如果連續(xù)的幾個隨機請求發(fā)送到性能弱的服務器,會導致異常甚至宕機
2.權重平滑(均)分配
如果幾個服務器權重一致,那么就是依次運行,但是服務器的性能權重一致的可能性很小
所以我們需要權重平滑分配
一個優(yōu)秀的權重平均分配算法,應該時讓每個服務器都有機會運行的
如果一個服務器集群的性能比為5:3:1服務器分別為A,B,C
那么1-5分配A,6-8分配B,9分配C
但是如果一個服務器被連續(xù)5個請求,那樣子B和C就不會被分配任務,我們希望所有的服務器能夠穿插在一起運行
因此
Dubbo2.7之后更新了這個算法使用“平滑加權算法”優(yōu)化權重平均分配策略
?優(yōu)點:能夠盡可能的在權重要求的情況加,實現請求的穿插運行(交替運行),不會發(fā)生隨機策略中的偶發(fā)情況
缺點:服務器較多時,可能需要減權和復權的計算,需要消耗系統(tǒng)資源
3.活躍度自動感知
記錄每個服務器處理一次請求的時間
按照時間比列來分配任務輸,運行一次需要的時間多的分配的請求輸較少
4.一致性Hash算法
根據請求的參數進行hash運算
以后每次相同的參數的請求都會訪問固定服務器
因為根據參數選擇服務器,不能平均分配到每臺服務器上
使用的也不多
總結
以上是生活随笔為你收集整理的负载均衡(Loadbalance)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 负载均衡(Load Balance)简介
- 下一篇: hbase balance命令相关