阿里重啟維護Dubbo了
2012 年,阿里巴巴在 GitHub 上開源了基于 Java 的分布式服務治理框架 Dubbo,之后它成為了國內該類開源項目的佼佼者,許多開發者對其表示青睞,同時,先后有不少公司在實踐中基于 Dubbo 進行分布式系統架構。目前在 GitHub 上,它的 fork、star 數均已破萬。
今年 9 月底,同為阿里開源的項目 RocketMQ 被 Apache 社區接納為頂級項目;10 月中旬,OpenMessaging、ApsaraCache 等全球化開源項目在阿里云棲大會正式公布;同時,Dubbo 也被列入重點維護開源項目,期望繼續保持快速發展的態勢。
阿里這一系列開源項目的成績,讓人們看到了它對于開源這件事的重視,重啟維護 Dubbo 的背后,有什么樣的思考呢?InfoQ 就此采訪了 Dubbo 負責人、阿里巴巴中間件高級技術專家羅毅。
InfoQ:為什么重啟維護?有哪些因素在驅動著?
羅毅:Dubbo 自開源以來,深受國內友商和開源愛好者的青睞,雖然一直陸續在維護,但是由于 Dubbo 用戶群體龐大,日常維護根本無法完全滿足社區的旺盛需求。隨著集團內部技術水平的迅速發展,如今不僅能夠保證集團及客戶的系統高效運行,還能抽調更多精力將技術賦能給全社會。
開源就是阿里巴巴集團在技術層面賦能的重要領域。阿里巴巴中間件團隊今后不僅要聆聽社區的聲音,及時修復問題,及時合并優秀的 pull request,還會力爭將 Dubbo 打造成有國際影響力的 RPC 框架。
從集團層面看,阿里為國內甚至國際開源社區貢獻了大量優秀開源項目,如大家熟知的 RocketMQ、JStorm、Fastjson、Dubbo、Weex 等。在今年的云棲大會上,阿里集團公開宣布了將加大技術投入、擁抱開源的發展策略。正是由于以上幾個原因,阿里巴巴中間件團隊決定 Dubbo 的下一步計劃是持續發展,并走向國際化。
InfoQ:我們知道阿里內部現在基本上沒有在使用 Dubbo,而是用了 Dubbo 之后開發的第三代 RPC 服務框架 HSF(High-speed Service Framework),那現在還將 Dubbo 重啟維護,大家不免疑惑。
羅毅:Dubbo 和 HSF 都是阿里巴巴集團自研的 RPC 服務框架,在不同時期都很好的支持了集團業務的發展。目前,HSF2 主要服務于集團內部業務,而 Dubbo2 主要以開源的形式服務社會,它們之間的關系與 Google 內部使用的 Stubby 和開源的 gRPC 類似。
從功能及使用方式上來說,HSF2 和 Dubbo2 都是十分優秀的 RPC 框架,都能很好地滿足搭建分布式服務化系統的訴求。內部堅持使用 HSF2 而不是開源版本的 Dubbo2 與業務屬性和規模有關。
此外也出于以下幾方面的考慮:內部統一技術框架、統一運維方面的訴求,應用遷移成本,內部服務注冊發現、配置推送以及鏈路追蹤等外圍系統的集成度等。總的來說,HSF2 在服務治理、超大規模集群、多機房幾個方面比 Dubbo2 更有優勢,并且在使用層面保持了對 Dubbo2 的兼容性。
為什么我們還要重啟 Dubbo 的維護呢?
道理和 Google 開源 gRPC 是一樣的。開源不僅僅是賦能社會的方式,我們也可以通過社區反饋提升產品和技術能力。
Dubbo2 作為一款優秀的開源產品,由于面向的用戶群體非常廣泛,這就決定了它的設計原則強調擴展性、使用輕量、以及對開源外圍系統和協議的適配。通過開源社區的建議,目前 Dubbo 已經具備了一些特有功能,例如對 REST 的支持和對 Spring Boot 的集成。
值得注意的是,目前負責 Dubbo 的團隊和內部負責 HSF 的是同一個團隊,在聆聽外部用戶反饋之余,我們也會把大規模領域里的服務運維經驗反哺回 Dubbo 社區,形成良性循環,做到真正意義上的內外統一。
InfoQ:那這么多年過去了,現在 Dubbo 在同類型項目中還存在優勢嗎?
羅毅: Dubbo 目前在 GitHub 上有超過 12000 個 star 和超過 10000 的 fork 數,仍然是國內影響力最大的開源項目之一。這其中有兩個重要因素,一個是 RPC 領域相對成熟,自 Dubbo 開源的第一天起,框架里已經融合了阿里巴巴服務化改造進程中沉淀下來的諸多寶貴經驗。
其二是 Dubbo 設計上十分提倡可擴展性,在框架內置功能不能滿足業務訴求甚至過時的情況下,用戶可以選擇自行擴展。這一點,從友商給我們提交來的 pull request 中可以明顯感受到,優秀的框架設計本身就可以很好的支持用戶千變萬化的需求。
Dubbo 維護重啟后,3 個月內連續發布 3 個維護版本,不僅修復了優雅停機、注解配置等一些框架缺陷,還新增了 Netty4 通信模塊和線程堆棧 dump 特性等。在框架穩定性上已經有了大幅提升,今后 Dubbo 將持續保持快速迭代更新,以滿足用戶的各種需求。
InfoQ:如您所說,這個開源項目,很多代碼貢獻者和框架采用者其實提交了不少有意義的反饋,近期 Dubbo 官方一連給出的這三個版本更新,其中意義最大、大家最想看到的更新內容是什么呢?
羅毅: 的確,作為國內使用面最廣的服務框架的代表,很多用戶都貢獻了在使用過程中發現的問題和建議。我們目前優先級最高的任務就是在其中遴選社區關注度最高的問題和建議優先給予支持,其中包括 issue 的修復、第三方依賴的升級、新技術新規范的適配、以及功能上的優化等。
已經發布的版本中我們篩選了社區反饋的框架缺陷、pull request 等,按照優先級順序修復,保證框架的可用性和穩定性,并同時更新了主頁 (http://dubbo.io/) 和文檔 (https://www.gitbook.com/@dubbo)。最近即將發布的版本中完善了注解形式的配置、Docker 環境中部署的問題等幾個社區呼聲較高的需求。
目前團隊最大的任務就是活躍社區,聆聽用戶的聲音,已經發布的三個版本以及未來的幾個維護版本都是圍繞這個話題進行。
InfoQ:阿里對 Dubbo 接下來的發展有怎樣的計劃?能否給大家一個清晰的視圖?
羅毅: 主力開發以阿里巴巴中間件團隊為主,優先吸納集團內部對 Dubbo 開源有熱情的開發同學,同時積極與國內大量使用 Dubbo 框架的友商聯系。一方面是合并大家的建議,對呼聲最高的建議進行性能提升,另一方面是尋求共建開源項目的資源。總的來說,項目方面會以阿里內部專門的團隊為主,并積極發展社區中的 committer。
在活躍社區的前提下,我們會繼續在 Dubbo 框架現代化、國際化這兩個大的方向上進行探索。現代化方面主要是考慮到目前微服務架構以及容器化日漸流行的大趨勢,Dubbo 作為 RPC 框架如何很好地融入其中,成為其生態體系中不可或缺的一個組件。
這里就不得不提到目前的一些文章在談到微服務的時候總是拿 Spring Cloud 和 Dubbo 來對比,需要強調的是 Dubbo 未來的定位并不是要成為一個微服務的全面解決方案,而是專注在 RPC 領域,成為微服務生態體系中的一個重要組件。至于大家關注的微服務化衍生出的服務治理需求,我們會在 Dubbo 積極適配開源解決方案,甚至啟動獨立的開源項目予以支持。
對于國際化方面的思考是雖然 Dubbo 在 GitHub 上非常受歡迎,但是受眾主要來自國內各友商以及個人開發者,希望將來能夠將用戶拓展到全球,代表國人在 RPC 領域與 gRPC、Finagle 等競爭。
最后,感謝 InfoQ 對 Dubbo 開源項目的關注。有關 Dubbo 項目今后的發展,還請密切關注 GitHub 上的 Release Notes(https://github.com/alibaba/dubbo/releases)以及 Dubbo 的云棲社區專欄。
來自: InfoQ