dubbo學習 二 dubbo源碼大致查閱


源碼的解析在官網都已經寫的非常詳細,可以參考:http://dubbo.io/Developer+Guide-zh.htm

 

服務提供者暴露一個服務的詳細過程

 

首先ServiceConfig類拿到對外提供服務的實際類ref(如:HelloWorldImpl),然后通過ProxyFactory類的getInvoker方法使用ref生成一個AbstractProxyInvoker實例,到這一步就完成具體服務到Invoker的轉化。接下來就是Invoker轉換到Exporter的過程。
Dubbo處理服務暴露的關鍵就在Invoker轉換到Exporter的過程(如上圖中的紅色部分)。 Dubbo協議的Invoker轉為Exporter發生在DubboProtocol類的export方法,它主要是打開socket偵聽服務,並接收客戶端發來的各種請求,通訊細節由Dubbo自己實現。
 

各種注冊中心的實現

 

各種協議的實現

 

將服務注冊到zookeeper

 

服務消費者消費一個服務的詳細過程

 

 

首先ReferenceConfig類的init方法調用Protocol的refer方法生成Invoker實例(如上圖中的紅色部分),這是服務消費的關鍵。接下來把Invoker轉換為客戶端需要的接口(如:HelloWorld)。這里獲取invoker的時候,如果是注冊中心同一個服務有多個提供者,消費者會根據配置的負載均衡來選擇出一個作為提供者來使用。並且也有各種容錯處理機制。
 

消費端各種容錯機制

 

消費端各種負載均衡機制

 

 使用RandomLoadBalance獲取一個提供者

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM