Dubbo3 源碼系列 -- 環境準備

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

這裏需要等待一會兒,去喝杯水吧!

image-20220204134402423

導入IDEA

mvn idea:idea
image-20220204134753020

模塊介紹

  • 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

image-20220204143632701

總結

本文簡單的搭建了Dubbo的源碼工程,後續繼續閱讀的小夥伴可以 GitHub 的Fork繼續研究;並且簡單介紹了Dubbo的模塊和案例演示。

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