dubbo框架原理

(1)介紹dubbo原理,暴露服務(wù)過程。
下圖是暴露服務(wù)流程:


image.png

首先dubbo暴露服務(wù)有兩種情況:

(1)延時(shí)暴露
(2)非延時(shí)暴露

下面說說非延時(shí)暴露:

dubbo在實(shí)例化完bean之后,在刷新容器最后一步發(fā)布ContextRefreshEvent事件的時(shí)候,通知實(shí)現(xiàn)了ApplicationListener的類執(zhí)行回調(diào)onApplicationEvent,該事件會(huì)調(diào)用ServiceConfig的export方法,此export就是服務(wù)暴露??傮w來說dubbo的服務(wù)就在onApplicationEvent事件中發(fā)布
那么dubbo是如何在onApplicationEvent中發(fā)布服務(wù)的呢?

暴露流程

(1)首先將服務(wù)封裝成invoker,換句話說invoker中封裝了服務(wù)的實(shí)現(xiàn)類。
(2)將invoker封裝成exporter并緩存起來,緩存中使用invoker的url作為key。
(3)服務(wù)端Server啟動(dòng)并監(jiān)聽窗口(當(dāng)請(qǐng)求過來時(shí),根據(jù)請(qǐng)求信息生成key,并去緩存中尋找相應(yīng)的invoker,如果找到了invoker就完成了調(diào)用)。

export的步驟簡(jiǎn)單介紹

(1)首先會(huì)檢查各種配置信息,填充屬性。
(2)加載注冊(cè)中心
(3)根據(jù)配置的所有協(xié)議和注冊(cè)中心url分別進(jìn)行服務(wù)暴露(本地服務(wù)/遠(yuǎn)程服務(wù))
(3.1)首先要獲取invoker
(3.2)生成Exporter,并進(jìn)行緩存
此處所有協(xié)議和注冊(cè)中心的意思,我的理解是:需要一個(gè)應(yīng)用層程序進(jìn)行進(jìn)程間通信,注冊(cè)中心是將生成好的Exporter推送到注冊(cè)中心,即將服務(wù)提交至注冊(cè)中心

export方法中加載注冊(cè)中心的工作細(xì)節(jié)

(1)export方法會(huì)判斷是否是延遲暴露,如不是則立即執(zhí)行doExport方法。
(2)doExport方法中會(huì)執(zhí)行一系列的檢查方法,然后調(diào)用doExportUrls方法。
(3)doExportUrls方法會(huì)首先調(diào)用loadRegistries獲取所有注冊(cè)中心url。

export方法中根據(jù)配置的協(xié)議進(jìn)行服務(wù)暴露的工作細(xì)節(jié)

(1)獲取所有注冊(cè)中心之后,會(huì)遍歷調(diào)用doExportUrldFor1Protocol方法,此方法根據(jù)不同的協(xié)議將服務(wù)轉(zhuǎn)換成url形式,一些參數(shù)配置參數(shù)會(huì)附在url后面。
(2)根據(jù)scope的值進(jìn)行服務(wù)暴露(即暴露/遠(yuǎn)程暴露/本地暴露)。

export方法中將服務(wù)暴露為遠(yuǎn)程服務(wù)的工作細(xì)節(jié)

(1)利用動(dòng)態(tài)代理技術(shù),將服務(wù)接口生成代理。
(2)調(diào)用Protocol生成的適配類的export方法,將服務(wù)接口代理交給export處理。
(3)export方法按照上述的工作流程,完成對(duì)服務(wù)的暴露。

個(gè)人理解:invoker的存在是生成代理類,這樣消費(fèi)者調(diào)用服務(wù)時(shí)候不會(huì)直接調(diào)用本地實(shí)例。而export的過程是標(biāo)準(zhǔn)化的一個(gè)過程,通過配置的協(xié)議將服務(wù)調(diào)用,服務(wù)信息標(biāo)準(zhǔn)化。

sentinel進(jìn)行熔斷,限流的原理以及流程

首先搞清楚熔斷與限流的區(qū)別:
A->B->C 表示調(diào)用關(guān)系。
當(dāng)B->C的時(shí)候發(fā)生突發(fā)流量的訪問,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容