dubbo解析-集群容錯(一)

為了避免單點故障,一般會在多臺機器上部署多個服務好乐,客戶端可以訪問任何一臺機器,當調(diào)用服務失敗回官,客戶端也會有多種選擇曹宴,是拋出異常,還是重試等歉提。
集群容錯涉及到上述兩個方面:

  1. 選擇合適的服務調(diào)用笛坦;
  2. 對服務調(diào)用失敗做出后續(xù)處理。

dubbo的集群容錯功能實現(xiàn)是在cluster路由層實現(xiàn)的苔巨。Cluster層將多個服務提供者合并為一個Cluster Invoker版扩,并將Cluster Invoker暴露給客戶端;客戶端調(diào)用時侄泽,該Invoker從Directory中找到所有可用服務的Invoker列表(Invoker可以認為是遠程服務提供者礁芦,Directory記錄了所有可用的遠程服務列表),后根據(jù)路由規(guī)則、負載均衡選擇一個合適的Invoker調(diào)用柿扣。
合并為一個Cluster Invoker流程圖如下:


合并流程

客戶端調(diào)用遠程服務的流程如下:


客戶端調(diào)用服務流程

集群容錯方案在Cluster Invoker中實現(xiàn)的肖方。
Cluster層主要有兩個接口:Cluster和Invoker。
Cluster接口的實現(xiàn)類有很多未状,這些實現(xiàn)類完成了第一個圖的藍色方塊功能:

  • mock=org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper
  • failover=org.apache.dubbo.rpc.cluster.support.FailoverCluster
  • failfast=org.apache.dubbo.rpc.cluster.support.FailfastCluster
  • failsafe=org.apache.dubbo.rpc.cluster.support.FailsafeCluster
  • failback=org.apache.dubbo.rpc.cluster.support.FailbackCluster
  • forking=org.apache.dubbo.rpc.cluster.support.ForkingCluster
  • available=org.apache.dubbo.rpc.cluster.support.AvailableCluster
  • mergeable=org.apache.dubbo.rpc.cluster.support.MergeableCluster
  • broadcast=org.apache.dubbo.rpc.cluster.support.BroadcastCluster
  • zone-aware=org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster

這些實現(xiàn)類都比較簡單俯画,例如:

public class FailsafeCluster extends AbstractCluster {
    public final static String NAME = "failsafe";

    public <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException {
        return new FailsafeClusterInvoker<>(directory);
    }
}

作用主要是創(chuàng)建Cluster Invoker對象,也就是Invoker接口的實現(xiàn)司草。Cluster Invoker對象是最終暴露給客戶端的艰垂。抽象類AbstractCluster使用ClusterInterceptor攔截器對doJoin方法返回的對象Cluster Invoker封裝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埋虹,一起剝皮案震驚了整個濱河市猜憎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搔课,老刑警劉巖胰柑,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辣辫,居然都是意外死亡旦事,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門急灭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姐浮,“玉大人,你說我怎么就攤上這事葬馋÷衾穑” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵畴嘶,是天一觀的道長蛋逾。 經(jīng)常有香客問我,道長窗悯,這世上最難降的妖魔是什么区匣? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蒋院,結(jié)果婚禮上亏钩,老公的妹妹穿的比我還像新娘。我一直安慰自己欺旧,他們只是感情好姑丑,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辞友,像睡著了一般吩抓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上性雄,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音戳晌,去河邊找鬼。 笑死间驮,一個胖子當著我的面吹牛躬厌,可吹牛的內(nèi)容都是我干的马昨。 我是一名探鬼主播竞帽,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸿捧!你這毒婦竟也來了屹篓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤匙奴,失蹤者是張志新(化名)和其女友劉穎堆巧,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泼菌,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谍肤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哗伯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荒揣。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焊刹,靈堂內(nèi)的尸體忽然破棺而出系任,到底是詐尸還是另有隱情,我是刑警寧澤虐块,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布俩滥,位于F島的核電站,受9級特大地震影響贺奠,放射性物質(zhì)發(fā)生泄漏霜旧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一儡率、第九天 我趴在偏房一處隱蔽的房頂上張望挂据。 院中可真熱鬧,春花似錦喉悴、人聲如沸棱貌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婚脱。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間障贸,已是汗流浹背错森。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留篮洁,地道東北人涩维。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像袁波,于是被迫代替她去往敵國和親瓦阐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容