Dubbo的服务暴露过程
一、URL
???????在說Dobbu之前我們先來講一下URL,為什么要提URL呢?
???????一般而言我們說的 URL 指的就是統(tǒng)一資源定位符,在網(wǎng)絡上一般指代地址,本質(zhì)上看其實就是一串包含特殊格式的字符串,標準格式如下:
???????而Dubbo就是采用URL的方式作為約定參數(shù)類型,也可以理解為Provider和Consumer溝通的樞紐。如果沒有這個標準,那么不同的接口就會以不同的參數(shù)來傳遞信息,而且通過統(tǒng)一的契約之后,代碼會顯得更加的規(guī)范。
二、服務暴露過程
1、執(zhí)行過程
第一步:檢測Dubbo配置,如果配置為空則會默認創(chuàng)建,并組裝成URL。
第二步:暴露服務,Provider將服務暴露給本地服務和遠程的服務。
第三步:將Provider服務提交至注冊中心。
2、對象創(chuàng)建過程
第一步:Dubbo將服務實現(xiàn)類轉(zhuǎn)換成Invoker。
第二步:將Invoker轉(zhuǎn)換成Exporter。
三、源碼分析
1、在初始化過程中service定義
???????這里實現(xiàn)了ApplicationListener,所以就會在SpringIOC容器刷新完成后調(diào)用onApplicationEvent()方法,這個方法里面做的就是服務暴露,也是服務的啟動點。接著通過調(diào)用export方法完成暴露過程。
而Dubbo支持多注冊中心,并且支持多個協(xié)議,一個服務如果有多個協(xié)議那么就都需要暴露。因此需要將多個協(xié)議分別向多個注冊中心暴露注冊,這里我們看一下doExportUrls方法具體實現(xiàn)。
2、封裝成invoker
??????至于為什么要封裝成invoker其實就是想屏蔽調(diào)用的細節(jié),統(tǒng)一暴露出一個可執(zhí)行體。
??????然后我們看下export是什么樣子。如下圖,export方法是標注了@Adaptive注解的,因此會生成代理類,然后代理類會根據(jù)Invoker里面的URL參數(shù)得知具體的協(xié)議,然后通過Dubbo SPI機制選擇對應的實現(xiàn)類進行export。
??????對于完整流程我們可以看一下官網(wǎng)的時序圖。
總結
以上是生活随笔為你收集整理的Dubbo的服务暴露过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java编译找不到文件_java报错找不
- 下一篇: interlace和progressiv