多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 14. Dubbo原理解析-集群&容錯之Cluster

14. Dubbo原理解析-集群&容錯之Cluster

來源:程序員人生   發布時間:2015-01-13 08:21:28 閱讀次數:3496次

Dubbo作為1個散布式的服務治理框架,提供了集群部署,路由,軟負載均衡及容錯機制

 

下圖描寫了dubbo調用進程中的對集群,負載等的調用關系。

 

Cluster

將Directory中的多個Invoker假裝成1個Invoker, 對上層透明,包括集群的容錯機制

Cluster接口定義

@SPI(FailoverCluster.NAME)

public interface Cluster {

    @Adaptive

    <T> Invoker<T>join(Directory<T> directory) throws RpcException;

}

Cluster可以看作是工廠類, 將目錄directory下的invoker合并成1個統1的Invoker,根據不同集群策略的Cluster創建不同的Invoker

 

我們來看下默許的失敗轉移,當出現失敗重試其他服務的策略, 這個Cluster實現很簡單就是創建FailoverCluseterInvoker對象

public class FailoverCluster implements Cluster {

    public final static String NAME ="failover";

    public<T> Invoker<T> join(Directory<T> directory)throws RpcException{

        return new FailoverClusterInvoker<T>(directory);

    }

}

 

 

  下圖展現了dubbo提供的所有集群方案


1)AvailableCluster: 獲得可用的調用。遍歷所有Invokers判斷Invoker.isAvalible,只要1個有為true直接調用返回,不管成不成功

2)BroadcastCluster: 廣播調用。遍歷所有Invokers, 逐一調用每一個調用catch住異常不影響其他invoker調用

3)FailbackCluster: 失敗自動恢復, 對invoker調用失敗, 后臺記錄失敗要求,任務定時重發, 通經常使用于通知

4)FailfastCluster: 快速失敗,只發起1次調用,失敗立即保錯,通經常使用于非冪等性操作

5)FailoverCluster: 失敗轉移,當出現失敗,重試其它服務器,通經常使用于讀操作,但重試會帶來更長延遲

(1)   目錄服務directory.list(invocation) 列出方法的所有可調用服務

獲得重試次數,默許重試兩次

(2)   根據LoadBalance負載策略選擇1個Invoker

(3)   履行invoker.invoke(invocation)調用

(4)   調用成功返回

調用失敗小于重試次數,重新履行從3)步驟開始履行

       調用次數大于等于重試次數拋出調用失敗異常

6)FailsafeCluster: 失敗安全,出現異常時,直接疏忽,通經常使用于寫入審計日志等操作。

7)ForkingCluster: 并行調用,只要1個成功即返回,通經常使用于實時性要求較高的操作,但需要浪費更多服務資源。

8)  MergeableCluster: 分組聚合, 按組合并返回結果,比如菜單服務,接口1樣,但有多種實現,用group辨別,現在消費方需從每種group中調用1次返回結果,合并結果返回,這樣就能夠實現聚合菜單項。

這個還蠻成心思,我們分析下是如何實現的

(1)   根據MERGE_KEY從url獲得參數值

(2)   為空不需要merge, 正常調用

(3)   按group分組調用,將返回接口保存到集合中

(4)   獲得MERGE_KEY如果是默許的話,獲得默許merge策略,主要根據返回類型判斷

(5)   如果不是,獲得自定義的merge策略

(6)   Merge策略合并調用結果返回

 

9)MockClusterWrapper: 具有調用mock功能是其他Cluster包裝

獲得url的MOCK_KEY屬性

(1)   不存在直接調用其他cluster

(2)   存在值startsWith("force") 強迫mock調用

(3)   存在值不是startsWith("force") 先正常調用, 出現異常在mock調用

 

 

集群模式的配置

<dubbo:service cluster="failsafe" />    服務提供方

<dubbo:reference cluster="failsafe" />  服務消費方

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成人精品曰本亚洲78 | 护士一级aaaaaa毛片 | 亚洲精品不卡久久久久久 | 综合图片区 | 亚洲欧洲精品视频在线观看 | 国产在线拍国产拍拍偷 | 婷婷在线成人免费观看搜索 | 国产不卡高清在线观看视频 | 日本天堂影院 | 久久优 | 亚洲免费黄网 | 日本h在线精品免费观看 | 亚洲三级黄色 | 毛片在线免费 | 在线亚洲精品国产成人二区 | 欧美一级毛片高清免费观看 | 亚洲韩国欧美 | a级网站 | 爽爽影院色黄网站在线观看 | 噜噜影院在线视频在线观看 | 久久精品女人毛片国产 | 亚洲高清在线视频 | 久久亚洲精中文字幕冲田杏梨 | 嗯啊在线观看免费影院 | 99热自拍 | 亚洲图片一区二区三区 | 在线亚洲成人 | 黄色的免费网站 | 一级特黄aa毛片免费观看 | 久久www免费人成_看片高清 | 成人免费在线视频网站 | 波多野结衣中出在线 | 国产一区二区三区四区五区六区 | 欧美尤物视频 | 免费一级毛片正在播放 | 亚洲国产精品aaa一区 | 亚洲码在线中文在线观看 | 欧美日本一区亚洲欧美一区 | 一级做a爱片特黄在线观看 一级做a爱片性色毛片武则天五则 | 天堂在线观看视频 | 国产精品久久精品 |