dubbo 之服務發布和註冊(一)
在之前的部落格(中介紹過了,如果發布 dubbo 服務不使用註冊中心的話,可以這麼配置:
......
......
//如果配置了註冊中心
if (registryurls != null && registryurls.size() > 0
&& url.getparameter("register", true))
if (logger.isinfoenabled())
invoker> invoker = proxyfactory.getinvoker(ref, (class) inte***ceclass, registryurl.addparameterandencoded(constants.export_key, url.tofullstring()));
exporter> exporter = protocol.export(invoker);
exporters.add(exporter);
}} else
......
......
上面**中的 protocol 就是來自:
private static final protocol protocol = extensionloader.getextensionloader(protocol.class).getadaptiveextension();
即就是 protocol$adaptive。執行了 protocol$adaptive 的 export() 方法:
......
......
public com.alibaba.dubbo.rpc.exporter export(com.alibaba.dubbo.rpc.invoker arg0) throws com.alibaba.dubbo.rpc.invoker
......
......
又是獲取的乙個 extension,這個 extension 到底是什麼取決於 extname,即來自 url.getprotocol。其實可以猜測這裡的 extname 是跟協議有關協議,因為不需要註冊中心了,後面直接 exporters.add() 即可。也可以 debug 除錯一下,先將註冊中心改為 「n/a」:
發布服務:
我這裡是 dubbo 協議,所以這裡是 dubbo:
既然這裡是 dubbo 了,結合對應關係,這裡就是 dubboprotocol:
看看 dubboprotocol 的 export() 方法:
最終還是到了這個方法:com.alibaba.dubbo.common.extension.extensionloader#createextension
dubbo 服務發布及註冊流程
dubbo 服務發布原始碼分析 export 進行服務發布 首先會獲得註冊中心集合列表以及協議集合列表,遍歷協議中心列表進行多協議發布服務 服務發布時,會根據配置檔案的引數資訊封裝成map物件,最後將map物件轉換成url位址的引數 根據url位址的協議頭 registry 會在 protocol....
Dubbo原始碼剖析三之服務註冊過程分析
dubbo原始碼剖析二之註冊中心 池塘裡洗澡的鴨子 cnblogs.com 中對註冊中心進行了簡單的介紹,對dubbo整合zookeeper鏈結原始碼進行了詳細分析。本文接著對服務註冊過程原始碼進行分析。借圖說明服務註冊 暴露 流程 利用之前案例跟蹤除錯分析上述流程的實現,或者驗證該流程 2 然後通...
springCloud學習之服務註冊和發現
leader讓完乙個簡單的springcloud的demo,自己之前聽說過springcloud微服務,但是沒有重視。現在網上查各種資料,但是感覺不怎麼樣啊,還是不會,明天晚上把 給他看,天啦,這個任務對我來說,太難了,但是也要想辦法完成啊。像建立springboot專案一樣,加了個註解 enabl...