Dubbo原始碼分析(一):Dubbo原始碼的結構概述
1.dubbo原始碼的結構
Dubbo原始檔主要包含以上這麼多包,其中:
dubbo-common
公共邏輯模組,包括Util類和通用模型。
dubbo-remoting 遠端通訊模組,相當於Dubbo協議的實現,如果RPC用RMI協議
則不需要使用此包。
dubbo-rpc 遠端呼叫模組,抽象各種協議,以及動態代理,只包含一對一的呼叫,
不關心叢集的管理。
dubbo-cluster
叢集模組,將多個服務提供方偽裝為一個提供方,包括:負載均衡, 容
錯,路由等,叢集的地址列表可以是靜態配置的,也可以是由註冊中心下發。
dubbo-registry
冊中心的抽象。
dubbo-monitor 監控模組,統計服務呼叫次數,呼叫時間的,呼叫鏈跟蹤的服務。
dubbo-config 配置模組,是Dubbo對外的API,使用者通過Config使用Dubbo,隱藏
Dubbo所有細節。
dubbo-container 容器模組,是一個Standlone的容器,以簡單的Main載入Spring
啟動,因為服務通常不需要Tomcat/JBoss等Web容器的特性,沒必要用Web容器去加
載服務。
整體上按照分層結構進行分包,與分層的不同點在於:
container
為服務容器,用於部署執行服務,沒有在層中畫出。protocol層和proxy層都放在rpc模組中,這兩層是rpc的核心,在不需要叢集時(只
有一個提供者),可以只使用這兩層完成rpc呼叫。
transport層和exchange層都放在remoting模組中,為rpc呼叫的通訊基礎。
serialize層放在common模組中,以便更大程度複用。
下面是更詳細的Project關係圖,依賴關係線有點亂。整個模組是從上到下傳遞依賴的。