dubbo的負載均衡策略和容錯策略


一、dubbo 負載均衡策略

 

  • random loadbalance

  默認情況下,dubbo 是 random load balance 隨機調用實現負載均衡,可以對 provider 不同實例設置不同的權重,會按照權重來負載均衡,權重越大分配流量越高,一般就用這個默認的就可以了。

  • roundrobin loadbalance

  這個的話默認就是均勻地將流量打到各個機器上去,但是如果各個機器的性能不一樣,容易導致性能差的機器負載過高。所以此時需要調整權重,讓性能差的機器承載權重小一些,流量少一些。

舉個栗子。

跟運維同學申請機器,有的時候,我們運氣好,正好公司資源比較充足,剛剛有一批熱氣騰騰、剛剛做好的一批虛擬機新鮮出爐,配置都比較高:8 核 + 16G 機器,申請到 2 台。過了一段時間,我們感覺 2 台機器有點不太夠,我就去找運維同學說,“哥兒們,你能不能再給我一台機器”,但是這時只剩下一台 4 核 + 8G 的機器。我要還是得要。

這個時候,可以給兩台 8 核 16G 的機器設置權重 4,給剩余 1 台 4 核 8G 的機器設置權重 2。

  • leastactive loadbalance

  這個就是自動感知一下,如果某個機器性能越差,那么接收的請求越少,越不活躍,此時就會給不活躍的性能差的機器更少的請求。

  • consistanthash loadbalance

  一致性 Hash 算法,相同參數的請求一定分發到一個 provider 上去,provider 掛掉的時候,會基於虛擬節點均勻分配剩余的流量,抖動不會太大。如果你需要的不是隨機負載均衡,是要一類請求都到一個節點,那就走這個一致性 Hash 策略。

 

二、dubbo 集群容錯策略

 

  • failover cluster 模式

  失敗自動切換,自動重試其他機器,默認就是這個,常見於讀操作。(失敗重試其它機器)

  • failfast cluster模式

  一次調用失敗就立即失敗,常見於寫操作。(調用失敗就立即失敗)

  • failsafe cluster 模式

  出現異常時忽略掉,常用於不重要的接口調用,比如記錄日志。

  • failback cluster 模式

  失敗了后台自動記錄請求,然后定時重發,比較適合於寫消息隊列這種。

  • forking cluster 模式

  並行調用多個 provider,只要一個成功就立即返回。

  • broadcacst cluster

  逐個調用所有的 provider。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM