閱讀627 返回首頁    go 技術社區[雲棲]


阿裏重啟維護Dubbo了

screenshot
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 等,按照優先級順序修複,保證框架的可用性和穩定性,並同時更新了主頁 (https://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 等競爭。

本文選自公眾號(聊聊架構) 作者:雨多田光

最後更新:2017-11-13 22:34:02

  上一篇:go  SaaS服務商如何通過數加平台統計業務流量
  下一篇:go  嫌訪問速度慢?教你秒速打開你的WordPress