天天看點

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

2011 年,阿裡 B2B 團隊決定将項目開源,一年時間就收獲了來自不同行業的大批使用者;

2014 年,由于團隊調整,Dubbo 暫停更新;

2017 年,Dubbo 開源重新開機;

2019 年,Dubbo 在僅用時 15 個月的情況下從 Apache 基金會畢業;

2020 年,阿裡内部開始 HSF 和 Dubbo 的融合;

2021 年 3 月,Dubbo 3.0 Preview 即将釋出

……

從 2011 到 2021,Dubbo 已經開源十年。十年,對于風起雲湧的雲計算領域是漫長且充滿變化的,但 Dubbo 在這個時代的浪潮裡不僅沒有變成被人遺忘的“前浪”,更在雲原生時代,迎來核心雲原生技術棧全面更新。本文是對阿裡集團服務架構負責人北緯的采訪,他在阿裡同時負責 HSF、Dubbo 和 Spring Cloud Alibaba。本文講述了他 2017 年接手Dubbo 後社群的進展,并展望開源十年的 Dubbo 将如何走好雲原生之路。

2017年,我開始接手 Dubbo 項目後,我們對外表示會重新維護這個項目,就收到了很多積極的回報,随着對這個項目的深入了解,我發現國内很多大型廠商,甚至傳統國企都在廣泛使用該項目,才意識到身上的責任。Dubbo 3.0 Preview 版即将在 3 月釋出,我們準備了 Dubbo 3.0 前瞻系列電子書,

點選立即下載下傳《Dubbo 3.0 前瞻》

,也借這個機會大家聊聊 Dubbo 重新開機開源後被頻繁問到的問題:

·      從 Apache 畢業兩年不到的時間,我們都做了什麼?

·      阿裡内部是如何進行 Dubbo 和 HSF 融合的?規模怎麼樣?

·      如何看待 Spring Cloud 和 gRPC?

·      3.0 有什麼值得期待的?

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

2017 年,我負責這個項目以來,一些開發者在擔心Dubbo 隻是阿裡主導的 KPI 開源項目,比較擔心這個項目能不能持續發展、會不會斷更。既然這樣,那我幹脆就把它放到中立的位置上,Apache 基金會是一個很好的選擇, 正是這一決定讓 Dubbo 迅速從 Apache 基金會畢業: 2019 年 5 月 21 日,Dubbo 在僅用時 15 個月的情況下從 Apache 基金會畢業。

事實證明,把 Dubbo 捐給 Apache,讓 Dubbo 變成一個社群主導的項目是一個非常正确的決策。根據 X-lab 開放實驗室最新釋出的《2020 年微服務領域開源數字化報告》,Dubbo 的開源活躍度全球排名 693,在微服務架構中排名第五,參與過社群建設的開發者數量已經超過1萬多人,來自外部的代碼貢獻量已經超過阿裡員工的貢獻量。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

資料來源《2020 年微服務領域開源數字化報告》

Dubbo 項目從 Apache 畢業 2 年不到的時間,整個社群擁有 21 名 PMC 成員,61 名committer,以及多達 370 名貢獻者。在過去一年,Dubbo在多語言建設方面先後從社群收獲了 JS、Python、Erlang、PHP、Go 的實作,特别鄭重感謝千米網、攜程網、樂信以及其他開發者們捐獻或者送出了這些多語言版本的絕大多數代碼,為社群帶來了豐富的多語言支援解決方案。在于雨的帶領下,Dubbo-go 可以說是目前衆多多語言版本中最活躍的一個分支,有者非常活躍的 go 子社群及持續增長的企業級使用者,目前 Dubbo go 已經在 1.5 版本追平 Dubbo Java 2.7 的特性;目前正在和 Java 齊頭并進,一起規劃 Dubbo 3.0 中雲原生的路線圖。

我們對這個大版本 Dubbo 3 的定義是雲原生、阿裡背書。計劃分為三個版本疊代,在後面 Dubbo 3 的路線圖中有詳細的描述。Dubbo 3.0 正在緊鑼密鼓的開發中,核心功能包括 Dubbo3 協定、應用級服務發現、新版路由規則等,go 與 java 版本預計将以同樣的時間節奏兌現以上所有功能,3 月底會有 preview 版本與社群見面。

過去 2 年社群的經曆更讓我相信,單靠核心團隊的幾位工程師憑着單純的開源情懷是很難持續的。全國各地有上百數千家企業在使用 Dubbo,僅依靠我們一個小團隊的力量遠遠不夠,我們希望社群内的開發者可以更多地參與進來。對 Dubbo 而言,不管開發者最初進入并對項目有所貢獻的原因是什麼。重要的是,我們希望能夠讓整個社群保持開放,即便個别工程師僅僅隻是為了日後找份工作來參與社群也沒有關系,我認為這種想法很正常,畢竟貢獻項目會占據開發者很多業餘時間,我們也希望這個項目可以對大家有所幫助。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

我面臨的第二個最大的質疑是:阿裡内部都不用 Dubbo,如何獲得開發者的信任?

熟悉阿裡技術曆史的同學可能知道,淘寶的HSF 項目也是一個中間件服務架構,與 Dubbo 做的事情高度重合。而Dubbo 在開源過程中很多開發者诟病的也是阿裡自己都沒有在用 Dubbo。這也是我們一直在苦惱的:阿裡内部的自研體系、商業化的産品技術與開源的項目,三方的技術路線一直沒有機會融為一體。

随着阿裡自研體系的上雲,融合的機遇終于到來了。2020年,阿裡雲提出了“三位一體”理念,即将“自研技術”、“開源項目”、“商業産品”形成統一的技術體系,最大化技術的價值。

HSF 目前以 Dubbo 3.0 為核心,内部特性以 Dubbo 插件的方式存在,并把 HSF 隻在阿裡集團内部大規模場景下高并發、高性能等優化經驗應用到 Dubbo 3.0 核心上,實作了内外功能的統一,使得社群和客戶都能用到這些優質經驗;另外一方面,Dubbo 3.0 雲原生相關的功能借助于社群開發力量得到進一步發展。通過“三位一體”與社群達成開放共赢的局面。

我的老上司林昊、阿裡人稱畢大師,由于設計開發了 HSF 今年獲得了中國計算機學會的傑出工程師獎,他在獲獎采訪中提到:作為工程師來講,很大的成就感來自于自己所做的技術被公司大範圍的使用,并且對這家公司的業務發展能起到很大的支撐作用;更大的成就感來自于自己做所的技術背後的思想、實作思路能影響到中國各大網際網路公司、企業去擁抱微服務。随着Dubbo和HSF的整合,我們在整個開源的體系中更多地去展現了 HSF 的能力,能夠讓更多的人通過使用 Dubbo 像阿裡巴巴之前使用 HSF 一樣更好的建構服務化的系統。

在2020年雙11,Dubbo 3.0 在集團電商業務上已經進入落地階段,電子書裡也會跟大家分享一些我們的實踐經驗。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

在Dubbo沉寂的幾年,出來很多新生的服務架構,Dubbo 和 Sping Cloud 是什麼關系?是不是二選一就夠了?Dubbo 和 gRPC 之間的差别是什麼?

Dubbo 和 Spring Cloud 如何二選一?

長久以來,總有開發者喜歡将 Dubbo 與 Spring Cloud 進行比較,提到這兩個名字的第一反應往往是應該選哪個,而不是二者如何配合使用。 在我看來,這主要還是技術選型的問題,以及使用者對随之而來的切換成本的顧慮。 其實這是一種誤解,兩者的關系不是非此即彼。今天的 Dubbo 已經成為了  Spring Cloud Alibaba 中一個重要的技術元件,Dubbo 服務和 Spring Cloud 服務可以完美的互相調用。未來,Dubbo 3.0 進一步的簡化了 Dubbo 和 Spring Cloud 混布場景中服務基礎設施的部署。

Spring Cloud 依托于 Spring 已經成為 Java 開發的标準架構,這是不争的事實,并結合大量業界經驗逐漸抽象出一套微服務通用架構模式标準。這套标準的好處在于可以讓開發者非常便捷地進行微服務軟體産品開發,且在整個 Spring 生态的加持下已經成為開發者的“一攬子”解決方案。

和 Spring Cloud 不同,Dubbo 在設計之初,擴充性、靈活性就被放在了一個很重要的位置。Dubbo 很容易內建别人,别人也容易的內建 Dubbo。同時,Dubbo 經過大量使用者生産驗證,阿裡在服務化領域持續實踐的産品。這兩點是 Spring Cloud 目前無法做到的。随着 Dubbo 恢複更新,其場景豐富程度與穩定性也有了非常大的提升,目前已經在多家頭部公司大規模應用。

回到衆多開發者對技術選型問題的顧慮:這兩套架構并不是非此即彼。相反的,使用者可以輕松的在這兩套架構之間切換,甚至未來可以完美的在一起協同工 作,這得益于 Spring Cloud Alibaba 的出現。

Spring Cloud 擁有一個強大的國際化社群,阿裡巴巴作為社群裡的重要成員,也貢獻出了 Spring Cloud Alibaba 這套實作,這也是目前整個 Spring Cloud 體系下最完善并且在持續更新的實作方案。

Spring Cloud Alibaba 出現

現在的 Dubbo 2.7 已經可以很好的在 Spring Cloud 體系下工作。通過 Spring Cloud Alibaba 中 Dubbo 的內建,Spring Cloud 應用可以調用原生釋出的 Dubbo 服務,Spring Cloud 釋出的 Dubbo 服務也可以被原生的 Dubbo 用戶端調用。這個得益于 2.7 中服務自省的實驗性項目,以及 Spring Cloud 側對 Dubbo 的适配。

在正在開展的 3.0 大版本中,這個實驗性的項目進化為原生應用級服務注冊機制。通過這個特性,未來 Spring Cloud 應用和 Dubbo 應用可以更加完美的混布。使用者可以為 Spring Cloud 和 Dubbo 複用同一套服務發現、服務配置、和服務管理體系,為 Dubbo 和 Spring 互通需要額外搭建網關将成為過去式,使用者可以零成本的在兩者之間切換,或者視場景不同選擇不同的架構,甚至可以在同一個應用中混用。Dubbo 與 Spring Cloud 混布場景中業界正常的 Proxy 叢集終于去掉,整個體系的架構更加簡單和穩定。在 Dubbo 3.0 版本中,整個團隊會繼續進化應用級服務注冊的想法,期望通過這項工作讓 Spring Cloud Alibaba 與 Dubbo 在注冊資料的模型上達成高度統一,複用同一套服務注冊中心,進一步簡化混布場景中的架構。

另外,我們團隊也在積極發展 Spring Cloud Alibaba 生态。作為國内 Java 界最具影響力的團隊之一,阿裡中間件團隊一直在密切關注 Spring 項目,通過 Spring 的封裝提升阿裡的中間件開發體驗。阿裡巴巴電商體系絕大部分應用已經實作 Boot 化。

當 Spring Cloud 初具影響力的時候,我們主動通過 Spring Cloud 來內建阿裡巴巴開源元件就變成一件自然而然的事情了 目前,Spring Cloud Alibaba 已經支援 Nacos 作為服務注冊中心、配置中心,Sentinel 作為限流,Seata 作為分布式事務元件,RocketMQ 作為分布式消息元件,當然還有 Dubbo 作為 RPC 元件,全面取代了已經宣布停止更新的 Spring Cloud Netflix 全家桶。另外,為了加速國内工程師對 Spring Initializr 的通路,團隊還通過阿裡雲上托管的start.aliyun.com 提供了快速生成 Spring Cloud Alibaba 應用的能力。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

無論從 GitHub 的項目活躍度資料還是關注度資料來看,毫不誇張地說,Spring Cloud Alibaba 已經成為 Spring Cloud 架構中的事實标準了。

如何看待 gRPC?

我們從不避諱 gPRC,它是一個令人尊敬的對手,是雲原生基礎設施之間通訊協定的事實标準。

但是 Dubbo 的優勢是不單單是一個 RPC,而且是一個 有着強大治理能力的 服務架構。我們認為:Dubbo 是 gRPC with batteries 。

我們從 gRPC 身上學到最有價值的一點就是反思 Dubbo 2 中協定設計的不足,開始重視雲原生支援領域裡兩個重要的問題:多語言支援和網關/Mesh 解析友好。在 Dubbo 3.0 中,新版本的協定是重中之重,除了解決上述兩個問題,對 gRPC 協定的相容也是新協定的設計目标之一。gRPC 有幾項明顯的優勢:在支援 HTTP/2 協定上走在了前列,提供了非常豐富的多語言庫支援,與 Google 主導的許多雲原生基礎設施無縫打通。gRPC 及時下流行的 Mesh 等雲原生技術建構了一套看起來相對完善的微服務技術棧,落地這套技術棧看起來是基于 gRPC 的微服務解決方案。

但 gRPC 架構自身而言還是專注在 RPC 通信。相比而言,Dubbo 提供了一站式的微服務開發、治了解決方案,Dubbo有更易用的面向接口的服務定義模型,有更完善的服務發現、服務治理機制。同時,在即将釋出的 3.0 規劃中,Dubbo 3 也将提供官方的 Mesh 解決方案支援,繼續給社群帶來易用的、一站式的解決方案。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

社群中的很多開發者都對 3.0 版本期待已久。Dubbo 3 的主基調就是雲原生支援,計劃分為三個版本疊代。重點傳遞雲原生友好的新一代 RPC 協定、應用級服務注冊發現、K8s 原生服務釋出、Mesh 控制面 xDS 協定對接以及分布式服務柔性等重磅級特性。

·      3.0 版本,重點釋出應用級服務注冊發現、Tripe、新路由規則

·      3.1 版本,重點釋出 K8s 原生服務、Mesh 控制面xDS 協定對接

·      3.2 版本,重點釋出分布式服務柔性

目前應用級服務發現已經在内部和一些頭部使用者的場景做試點,後續随着項目的進展,團隊會第一時間釋出功能實作細節。通過 Dubbo 3.0 的釋出,我們期待帶來一款向雲原生遷移友好的,對雲原生基礎設施友好的新一代服務架構體系。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

未來,Dubbo 項目總的發展基調還是堅持合作開放的開源路線不動搖,追求更高品質和功能更完善的路線不動搖。目前,社群發展的重中之重是Dubbo3.0 演進。在不久後的 9 月份, Dubbo 3.0 應用級注冊發現将在阿裡巴巴内部和開源側各公司落地。這不僅是Dubbo 邁向雲原生微服務的第一步,也是對接 K8s 注冊發現和跨架構 RPC 互通的前提。

就應用方而言,從接口級注冊發現到應用級注冊發現可以顯著降低注冊中心和用戶端的記憶體壓力。今年雙 11,雲原生服務治理規則會把 Dubbo 多年以來在大規模高并發服務治理方面的最佳實踐融入雲原生。下一代協定将基于 http2/protobuf 帶來更好的生态和 Reactive 的全面支援,柔性增強所涵蓋的自适應政策和分布式負載均衡将會在性能和穩定性上帶來更大的突破。

回到 Dubbo 重新開機開源之時,生态相對薄弱 。如今,Dubbo 生态已經日益完善。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

Dubbo 豐富的擴充實作

比如,多語言支援已經達到 6 種,30+ 生态子項目。在 Dubbo 主動內建周邊的同時,我們也被第三方開源項目 Spring Cloud Sleuth、Zipkin、Skywalking、Envoy、tengine等主動內建。

十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出

我心中的完善是希望能夠産出一個官方推薦的 Dubbo Stack,免除使用者選擇上面的煩惱。 至于 Dubbo Stack 中是否都源自阿裡,我倒是抱着順其自然的态度,這還是需要資料說話,誰家的元件在生産系統中運用最廣,我們就推薦誰。總的來說,這件事情的決定權在社群和 Dubbo 使用者。

最後,感謝十年來 Dubbo 的使用者和社群貢獻者們,對于 Dubbo 3.0 Roadmap 中的雲原生友好的新一代 RPC 協定、應用級服務注冊發現、K8s 原生服務釋出等重磅級特性,我們梳理了一系列前瞻的文章整理成了電子書《Dubbo 3.0 前瞻》。

點選立即下載下傳: https://developer.aliyun.com/topic/download?id=1136

Dubbo 開源社群釘釘群:21976540

藏經閣系列電子書

阿裡雲開發者社群——藏經閣系列電子書,彙聚了一線大廠的技術沉澱精華,爆款不斷。點選連結擷取海量免費電子書:

https://developer.aliyun.com/ebook
十年再出發,Dubbo 3.0 Preview 即将在 3 月釋出