柚子快報(bào)邀請(qǐng)碼778899分享:架構(gòu) Dubbo集群容錯(cuò)機(jī)制
柚子快報(bào)邀請(qǐng)碼778899分享:架構(gòu) Dubbo集群容錯(cuò)機(jī)制
在分布式系統(tǒng)構(gòu)建過程中,我們需要重點(diǎn)關(guān)注和處理的就是服務(wù)依賴失敗。服務(wù)依賴失敗較之服務(wù)自身失敗而言影響更大,也更加難以發(fā)現(xiàn)和處理。為了應(yīng)對(duì)服務(wù)依賴失敗,我們需要引入服務(wù)容錯(cuò)(Fault Tolerance)的思想和實(shí)現(xiàn)機(jī)制。
服務(wù)容錯(cuò)是一個(gè)相對(duì)復(fù)雜的話題,也是一個(gè)理論性比較強(qiáng)的話題。那么,我們?nèi)绾蝸砝斫夥?wù)容錯(cuò)的設(shè)計(jì)策略和實(shí)現(xiàn)原理呢?最好的辦法就是參考優(yōu)秀開源框架中的做法。這就是今天要討論的內(nèi)容,我們將基于Dubbo框架來剖析它所具備的服務(wù)容錯(cuò)機(jī)制。
Dubbo中的集群
服務(wù)容錯(cuò)的實(shí)現(xiàn)方法和策略有很多,我們首先明確在Dubbo中主要采用的是集群容錯(cuò)的實(shí)現(xiàn)策略。
Dubbo中的整個(gè)集群結(jié)構(gòu)如下圖所示。這張圖比較復(fù)雜,涉及到Dubbo中關(guān)于集群管理和服務(wù)調(diào)用的諸多概念。為了討論集群容錯(cuò),我們必須首先理解這種圖中的相關(guān)概念,進(jìn)而把握Dubbo對(duì)集群的抽象。
上圖展現(xiàn)了Dubbo中的幾個(gè)重要技術(shù)組件,我們一一來展開。
Invoker:在Dubbo中,Invoker是一個(gè)核心概念,代表的就是一個(gè)具體的可執(zhí)行對(duì)象;
Directory:即目錄,代表一個(gè)集合,內(nèi)部包含了一組Invoker對(duì)象;
Router:即路由器,根據(jù)路由規(guī)則在一組Invoker中選出符合規(guī)則的一部分Invoker;
LoadBalance:即負(fù)載均衡,對(duì)經(jīng)過Router過濾之后的一部分Invoker執(zhí)行各種負(fù)載均衡算法,從而確定一個(gè)具體的Invoker;
Cluster:即集群,從Directory中獲取一組Invoker,并對(duì)外偽裝成一個(gè)Invoker。這樣,我們?cè)谑褂肅luster時(shí)就像是在使用一個(gè)Invoker一樣,而在這背后則隱藏了訪問容錯(cuò)機(jī)制。
基于上述分析,今天內(nèi)容所要介紹的重點(diǎn)是Cluster。我們首先來看看Dubbo中Cluster接口的定義,該接口只包含一個(gè)join方法,如下所示。
@SPI(FailoverCluster.NAME)
public interface Cluster {
????@Adaptive
????
}
Cluster接口中包含另一個(gè)與集群相關(guān)的重要概念,即前面提到的Directory。Directory本質(zhì)上代表多個(gè)Invoker,我們需要知道可以通過它獲取一個(gè)有效Invoker的列表。
換一個(gè)角度,Dubbo中
柚子快報(bào)邀請(qǐng)碼778899分享:架構(gòu) Dubbo集群容錯(cuò)機(jī)制
文章來源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。