1. 執行com.alibaba.dubbo.config.spring.schema.dubbonamespacehandler 中的init()方法
向private final mapparsers = new hashmap<>();新增各個配置項和beandefinitionparser
2.依次執行dubbobeandefinitionparser類的解析方法parse(),進行解析,並把配置資訊註冊
對配置檔案中標籤
="com.learn.service.userservice" ref=
"userservice"
/>進行解析暴露
1.servicebean
1.1 實現了initializingbean介面的afterpropertiesset方法
1.1介面(
)1.2
.1export()
;1.2
.2 serviceconfig.
doexport()
->
doexporturls()
->
doexporturlsfor1protocol()
1.2.3
doexporturlsfor1protocol
()方法中
1.2.3.1獲取指定介面、指定實現類、指定註冊中心、指定協議的執行器 invoker,並進行包裝
1.2.3.2呼叫protocol.
export
; 有兩個proticol,dubboprotocol和registryprotocol。
1.2.3.2
.1先執行registryprotocol.
export()
->
dolocalexport
(origininvoker)
1)dubboprotocol.
export()
dubboprotocol.
export()
->
openserver
(url)
-> exchangers.
bind
(url, requesthandler)
-> transporters.
bind
(url,
newdecodehandler
(new
headerexchangehandler
(handler)))
-> nettyserver/minatransporter
2)providerconsumerregtable.
registerprovider
(origininvoker, registryurl, registedproviderurl)
;註冊服務到註冊中心
對配置檔案解析引用服務
1.referencebean
1.1 實現了initializingbean介面的afterpropertiesset方法
1.2 factorybean 自定義bean的生成,呼叫getobject()介面
get()->init()->createproxy(map)->protocol.refer()
1.2.1 有兩個protocol,dubboprotocol和registryprotocol
1.2.1.1 先執行registryprotocol.refer()方法
1)directory.subscribe()內部呼叫
dubboprotocol.refer()
->getclients(url);
->getsharedclient(url);
->initclient(url);
->exchangers.connect(url, requesthandler);
->transporters.connect(url, new decodehandler(new headerexchangehandler(handler)));
1.2.1.2 註冊到登錄檔,providerconsumerregtable.registerconsumer(invoker, url, subscribeurl, directory); 返回執行器
1.3 返回**物件 proxyfactory.getproxy(invoker);
2. 把**物件儲存到容器中
//**服務介面執行
1.invokerinvocationhandler.invoke()方法
附件github原始碼 dubbo 問題整理
1 面試題 dubbo中zookeeper做註冊中心,如果註冊中心集群都掛掉,發布者和訂閱者之間還能通訊麼?可以的,啟動dubbo時,消費者會從zk拉取註冊的生產者的位址介面等資料,快取在本地。每次呼叫時,按照本地儲存的位址進行呼叫 註冊中心對等集群,任意一台宕掉後,會自動切換到另一台 註冊中心全部...
dubbo原理特點
dubbo是乙個分布式服務框架,致力於提供高效能和透明化的rpc遠端服務呼叫方案,以及soa服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務框架的需求,並且本質上是個服務呼叫的東東,說白了就是個遠端服務呼叫的...
dubbo使用原理
dubbo是阿里巴巴公司開放源 的高效能優秀的伺服器框架,使得應用可通過高效能的rpc實現服務的輸入和輸出功能,可以與spring進行繼承。上述的工作原理 provider 暴露服務方稱之為 服務提供者 consumer 呼叫遠端服務 方稱之為 服務消費者 registry 服務註冊與發現的中心目錄...