dubbo 相關知識

https://blog.csdn.net/a347911/article/details/88324056

 

https://www.jianshu.com/p/48d3b63723ed

 

 

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

  1. 首先ServiceConfig類拿到對外提供服務的實際類ref(如:HelloWorldImpl),然後通過ProxyFactory類的getInvoker方法使用ref生成一個AbstractProxyInvoker實例,到這一步就完成具體服務到Invoker的轉化。
  2. Dubbo處理服務暴露的關鍵就在Invoker轉換到Exporter的過程,Invoker通過調用Protocol的export方法創建Exporter。

以Dubbo和RMI這兩種典型協議的實現來進行說明:

  • Dubbo的實現:Dubbo協議的Invoker轉爲Exporter發生在DubboProtocol類的export方法,它主要是打開socket偵聽服務,並接收客戶端發來的各種請求,通訊細節由Dubbo自己實現。
  • RMI的實現:RMI協議的Invoker轉爲Exporter發生在RmiProtocol類的export方法,它通過Spring或Dubbo或JDK來實現RMI服務,通訊細節這一塊由JDK底層來實現,這就省了不少工作量。

Proxyfactory的實現包括:javassistProxyFactory、jdkProxyFactory
Protocol的實現包括(對應dubbo支持的通訊協議):DubboProtocol、HessianProtocol、InjvmProtocol、RmiProtocol、WebServiceProtocol

 

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

把遠程服務轉換爲invoker(protocol的refer方法),然後把invoker轉換爲客戶端需要的接口
首先ReferenceConfig類的init方法調用Protocol的refer方法生成Invoker實例(如上圖中的紅色部分),這是服務消費的關鍵。接下來把Invoker轉換爲客戶端需要的接口(如:HelloWorld)。

 

 


 

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