dubbo實現原理—原始碼分析

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...
目錄

DUBBO 載入

spring載入bean的時候,遇到dubbo的名稱空間時,會呼叫DubboNamespaceHandler類。執行init方法。將dubbo標籤的各種子標籤如service,reference存到一個叫parsers的HashMap中。

DUBBO標籤的解析

所有通過標籤定義的bean 都會定義成BeanDefinition。並且存到BeanDefinitionMap中

service標籤,provide標籤,consumer標籤的識別都是用if判斷的。

現在有兩個map。一個spring初始化產生的存有dubbo各種子標籤型別對應的解析器的parsers另一個是存有解析到的beandefintion的beandefinitionMap。dubbo內部中一定存在一個方法從parsers中拿到解析器。然後通過這個解析器解析bean。存到beandefinitionmap中。但是我沒找到

僅僅只是這樣還不能實現rpc呼叫

dubbo底層是通過在ServiceConfig.export 或者ReferenceConfig.get 初始化時,將Bean物件轉會為url格式,將所有Bean屬性轉成url的引數。 生成url來實現的
以ServiceConfig.export方法為例。由於if語句佔據了大量篇幅,直接截圖核心部分

以上是本地暴露

向註冊中心暴露服務:

和上一種的區別:需要將服務的IP和埠一同暴露給註冊中心。
ServiceConfig解析出的url格式為:registry://registry-host/com.alibaba.dubbo.registry.RegistryService?export=URL.encode(url)

引用服務,

主要是用ReferenceConfig.init()。

該方法的一大部分都是在拆解url。最終呼叫refer方法。得到invoker。

相關文章

開發語言 最新文章