Dubbo之負載均衡策略、集群容錯策略、動態代理策略

Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。

Dubbo之負載均衡策略、集群容錯策略、動態代理策略

一、負載均衡策略

1、Random LoadBalance,隨機(默認)

RandomLoadBalance 是加權隨機算法的具體實現,可以完全隨機,也可以按權重設置隨機概率。

2、RoundRobin LoadBalance,輪循

可以輪詢和加權輪詢。存在響應慢的提供者會累積請求的問題,比如:第二臺機器很慢,但沒掛,當請求調到第二臺時就卡在那,久而久之,所有請求都卡在調到第二臺上。

3、LeastActive LoadBalance,最少活躍調用數

活躍調用數越小,表明該服務提供者效率越高,單位時間內可處理更多的請求。此時應優先將請求分配給該服務提供者。

4、ConsistentHash LoadBalance,一致性Hash

一致性Hash算法,相同參數的請求一定分發到一個provider上去。provider掛掉的時候,會基於虛擬節點均勻分配剩餘的流量,抖動不會太大。

Dubbo之負載均衡策略、集群容錯策略、動態代理策略

二、集群容錯策略

1、failover cluster(默認)

失敗自動切換,調用失敗時,自動重試其他機器。通常用於讀操作,但重試會帶來更長延遲。

2、Failfast Cluster

快速失敗,只發起一次調用,失敗立即報錯。通常用於非冪等性的寫操作,比如新增記錄。

3、Failsafe Cluster

失敗安全,出現異常時,直接忽略。通常用於寫入審計日誌等操作。

4、Failback Cluster

失敗自動恢復,後臺記錄失敗請求,定時重發。通常用於消息通知操作。

5、Forking Cluster

並行調用多個服務器,只要一個成功即返回。通常用於實時性要求較高的讀操作,但需要浪費更多服務資源。

Dubbo之負載均衡策略、集群容錯策略、動態代理策略

三、動態代理策略

默認使用javassist動態字節碼生成,創建代理類。也可以通過spi擴展機制配置自己的動態代理策略。


分享到:


相關文章: