Dubbo3 源碼系列 -- 環境準備
前言
工作中一直使用Dubbo項目,藉着這次機會通過源碼的方式來學習下Dubbo的源碼內容。目前市面上很多都是的Dubbo2系列的教程;就連目前的Dubbo的官方文檔也還在完善中,既然是學習,那就
just do it
!
環境搭建
前置環境
- Maven
- Git
- JDK
- IntelliJ IDEA
源碼構建
拉取代碼
git clone [email protected]:ln0491/dubbo.git
執行編譯
mvn clean install -Dmaven.test.skip=true
這裏推薦使用 mvnd
編譯,速度實測要快3倍左右。 (關於mvnd的代碼研究的請參考:mvnd的GitHub)
mvnd clean install -Dmaven.test.skip=true -Dquickly
這裏需要等待一會兒,去喝杯水吧!
導入IDEA
mvn idea:idea
模塊介紹
-
dubbo-common 模塊
Dubbo 的一個公共模塊,其中有很多工具類以及公共邏輯,例如Dubbo SPI 實現、時間輪實現、動態編譯器等
-
dubbo-remoting 模塊
Dubbo 的遠程通信模塊,其中的子模塊依賴各種開源組件實現遠程通信。在 dubbo-remoting-api 子模塊中定義該模塊的抽象概念,在其他子模塊中依賴其他開源組件進行實現,例如,dubbo-remoting-netty4 子模塊依賴 Netty 4 實現遠程通信,dubbo-remoting-zookeeper 通過 Apache Curator 實現與 ZooKeeper 集羣的交互。
-
dubbo-rpc 模塊
Dubbo 中對遠程調用協議進行抽象的模塊,其中抽象了各種協議,依賴於 dubbo-remoting 模塊的遠程調用功能。dubbo-rpc-api 子模塊是核心抽象,其他子模塊是針對具體協議的實現,例如,dubbo-rpc-dubbo 子模塊是對 Dubbo 協議的實現,依賴了 dubbo-remoting-netty4 等 dubbo-remoting 子模塊。 dubbo-rpc 模塊的實現中只包含一對一的調用,不關心集羣的相關內容。
-
dubbo-registry 模塊
Dubbo 中負責與多種開源註冊中心進行交互的模塊,提供註冊中心的能力。其中, dubbo-registry-api 子模塊是頂層抽象,其他子模塊是針對具體開源註冊中心組件的具體實現,例如,dubbo-registry-zookeeper 子模塊是 Dubbo 接入 ZooKeeper 的具體實現。
-
dubbo-monitor 模塊
Dubbo 的監控模塊,主要用於統計服務調用次數、調用時間以及實現調用鏈跟蹤的服務。
-
dubbo-config 模塊
Dubbo 對外暴露的配置都是由該模塊進行解析的。例如,dubbo-config-api 子模塊負責處理 API 方式使用時的相關配置,dubbo-config-spring 子模塊負責處理與 Spring 集成使用時的相關配置方式。有了 dubbo-config 模塊,用戶只需要瞭解 Dubbo 配置的規則即可,無須瞭解 Dubbo 內部的細節。
-
dubbo-metadata 模塊
Dubbo 的元數據模塊(本課程後續會詳細介紹元數據的內容)。dubbo-metadata 模塊的實現套路也是有一個 api 子模塊進行抽象,然後其他子模塊進行具體實現
-
dubbo-configcenter 模塊
Dubbo 的動態配置模塊,主要負責外部化配置以及服務治理規則的存儲與通知,提供了多個子模塊用來接入多種開源的服務發現組件
-
dubbo-demo 模塊
Dubbo的官方提供的使用案例,可以通過註解、API、XML方式、SpringBoot等相關的演示案例
案例運行
這裏通過
dubbo-demo-annotation
爲例,測試編譯效果。提前啓動zookeeper
吧。
- 啓動
org.apache.dubbo.demo.provider.Application
- 啓動
org.apache.dubbo.demo.consumer.Application
總結
本文簡單的搭建了Dubbo的源碼工程,後續繼續閱讀的小夥伴可以 GitHub 的Fork
繼續研究;並且簡單介紹了Dubbo的模塊和案例演示。