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