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獲取一個提供者

相關文章
相關標籤/搜索