1、Apache Dubbo學習整理--架構初探

今天開始記錄本身學習的dubbo過程,而且轉換成文檔形式輸出,若是有問題,請隨時指出。
主要參考圖書《深刻理解Apache Dubbo與實踐》,網上資料信息,自身查看源碼等整理出的。學習是個持續過程,之後探索中發現有問題或者更加深刻,還會繼續回來補充。

1、架構圖服務器

clipboard.png

一、註冊中心網絡

二、服務端(提供者)架構

三、客戶端(調用者)負載均衡

四、監控中心框架

2、分層
dubbo層級分佈學習

API層:spa

一、Service(業務層,開發者實現的業務代碼)線程

二、Config(配置層,主要圍繞ServiceConfig和ReferenceConfig類,管理配置)代理

SPI層:code

一、Proxy(服務代理層,不管生產者仍是消費者,都會生成代理類。完成遠程調用)

二、Registry(註冊層。負責註冊和發現)

三、Cluster(集羣容錯層。遠程調用失敗的容錯機制,選擇調用節點的負載均衡策略)

四、Monitor(監控層,主要統計調用次數和時間等。)

五、Protocol(遠程調用層。封裝RPC調用具體過程,是Invoker暴露和引用的主功能入口)

六、Exchange(信息交換層。創建Request-Response模型,封裝請求響應模式)

七、Transport(網絡傳輸層。把網絡傳輸抽象爲統一接口。)

八、Seriallze(序列化層。負責序列化和反序列化)

3、調用過程

服務暴露過程:

一、服務端在啓動時,初始化服務實例

二、經過Proxy組件調用具體的協議(Protocol),把服務端要暴露的接口封裝成Invoker,

三、而後轉換成Exporter,

四、框架會打開服務端口等並記錄服務實例到內存中。

五、最後經過Registry把服務元數據註冊到註冊中心。

客戶端調用過程:

啓動時經過Registry在註冊中心訂閱服務端的元數據(IP和端口)。獲得暴露的服務。

服務消費者調用服務提供者的過程:

服務調用過程

一、消費者調用,先經過Proxy

二、Proxy持有一個Invoker對象

三、而後出發invoke調用。

四、在invoke過程當中,須要使用Cluster(負責容錯),如調用失敗的重試。

五、Cluster在調用以前會經過Directory獲取全部能夠調用的遠程服務Invoker列表

六、經過路由規則將Invoker列表過濾一遍

七、經過LoadBlance方法作負載均衡,最後選出一個Invoker。

八、Invoker通過過濾鏈,過濾鏈一般處理上下文,限流,計算等。

九、使用Client作數據傳輸。

十、使用Codec作私有協議構造。

十一、構造完成後,對數據包作序列化,而後傳輸到服務器提供者。

十二、服務提供者收到數據包,也使用Codec處理協議,而後對完整的數據報文作反序列化。(Request)

1三、Request被分配到線程池中進行處理。

1四、Server處理Request.

1五、根據請求查詢到對應的Exporter(內部持有Invoker)

1六、通過過濾鏈Filter

1七、獲得接口的具體實現,而且調用,再原路把結果返回。

相關文章
相關標籤/搜索