Dubbo記錄-服務消費者端的源碼分析

首先明確一點:RPC(遠程服務調用)在消費者端肯定是通過代理模式來實現的。
..

消費者的xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
    <dubbo:application name="hello-world-app"  />  
    <dubbo:registry address="multicast://224.5.6.7:1234" />
    <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>

1.容器啓動時,註冊解析器 DubboNamespaceHandler 讀取相關標籤生成對應的BeanDefinition交給Spring容器。
Dubbo記錄-服務消費者端的源碼分析
..
2.對於消費者來說關鍵的一項是 dubbo:reference,所以這裏分析解析reference到對應的類 ReferenceBean。由於ReferenceBean實現了InitializingBean接口,所以在設置完成bean的所有屬性後會調用 afterPropertiesSet 方法。
..
3.afterPropertiesSet 方法來檢查配置是否完善,包括consumer、application、module、register、monitor,最後調用getObject (父類 ReferenceConfig 的 init 方法)方法來組裝 Invoker。
..
4.init 方法裏面關聯了所有的application、module、consumer、registry、monitor、service、protocol後調用對應Protocol類的refer方法生成InvokerProxy。當用戶調用service時dubbo會通過InvokerProxy調用Invoker的invoke的方法向服務端發起請求。客戶端就這樣完成了自己的初始化。

..

附錄

全部的標籤
Dubbo記錄-服務消費者端的源碼分析
..

參考

【flashflight的專欄- Dubbo源碼分析】http://blog.csdn.net/flashflight/article/details/44318447
【dubbo官方文檔】http://dubbo.io/books/dubbo-user-book/preface/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章