對話 Dubbo 喚醒者北緯:3.0 將至,阿里核心電商業務也在用 Dubbo

1.png

做者 | 北緯、趙鈺瑩java

**導讀:**2008 年,Dubbo 項目誕生;2014 年,因爲內部團隊調整,Dubbo 暫停更新;2017 年,北緯帶領團隊從新喚醒 Dubbo,並將其捐獻給了 Apache 基金會。短短 15 個月,Dubbo 便從基金會畢業。現在,Dubbo 已經畢業一年,愈來愈多開發者開始詢問 Dubbo 3.0 到底有哪些變化,阿里巴巴內部到底用不用 Dubbo,這是否是一個 KPI 開源項目以及 Dubbo 和 Spring Cloud 之間究竟是什麼關係。本文,將獨家對話 Dubbo 項目二代掌門人北緯(GitHub ID@beiwei30),聽他一一解答上述問題。安全

Dubbo 迴歸的這些年

Dubbo 項目誕生於 2008 年,最初只是一個阿里內部的系統;2011 年,阿里 B2B 決定將整個項目開源,一年時間就收穫了來自不一樣行業的大批用戶;2014 年,因爲內部團隊調整,Dubbo 暫停更新;2017 年 9 月,就在該項目將近 3 年沒動靜的時候,Dubbo 連續發佈了好幾個新版本,而且開始在內部招募對 Dubbo 感興趣的同事。新版本背後的主力開發團隊是阿里巴巴中間件團隊,其中一個最重要的人就是北緯,他從 2017 年 7 月開始全面接手 Dubbo。微信

「我知道這是一個特別出名的開源軟件,可是很長一段時間沒有人維護,我當時在阿里內部的工做方向和 Dubbo 徹底一致,也是作服務框架,因此對於認知 Dobbo 並非很是困難。架構

接手以後,咱們開始沒有作太多事情,只是對外表示會從新維護這個項目,就收到了不少積極的反饋,這讓我很是驚訝,不少開發者也在問咱們能夠從新維護多久。隨着對這個項目的深刻了解,我發現國內不少大型廠商,甚至傳統國企都在普遍使用該項目,當時也以爲本身的責任重大,不知道可不能夠把這個項目作好。」併發

彼時,北緯面臨的第一個問題是:在 Dubbo 主版本中止更新的這些年,業界出現了不少 Dubbo 的分支版本,不一樣的團隊都在維護本身的分支,若是不重視這一客觀事實,極可能致使只有主版本在快速迭代,其餘社區成員根本參與不進來,這樣的開源意義不大。採訪中,北緯表示:「對 Dubbo 來講,這些分支版本一樣重要。咱們仍是但願能夠給大部分深度用戶一條安全的合併路徑,根據咱們的主要版本進行迭代。在這個過程當中,咱們和幾大主流分支版本的開發團隊都進行過交流,他們也很是願意同主版本進行合併。」負載均衡

在 Dubbo 正式復出以後,北緯也聽到了一些開發者的疑問,好比此次能維護多久之類的。「既然放到阿里巴巴下面,開發者有這樣的擔憂,那我乾脆就把它放到中立的位置上,Apache 基金會是一個很好的選擇,由於 GPL 協議太偏理想化,Dubbo 項目更多用在商業化公司,GPL 協議可能會影響後續推廣。相對來講,Apache 協議比較實用。」框架

正是這一決定讓廣大開發者見到了最短期從 Apache 基金會畢業的項目:2019 年 5 月 21 日,Dubbo 在僅用時 15 個月的狀況下從 Apache 基金會畢業。less

「我記得,與 Dubbo 同期畢業的有五個項目,Dubbo 是用時最短的。咱們並不着急讓 Dubbo 畢業,但咱們原來預期的時間比 15 個月還要短,但礙於基金會的溝通流程,時間週期會相對拉長。」分佈式

Apache 基金會的特色是寬進嚴出,也就是說進去可能相對容易,但畢業是難的,並且很是強調公開透明。在國內,大部分人習慣經過微信和釘釘溝通,響應時間也會比較短,但 Apache 基金會是一個面向全球的組織,全部交流都基於郵件傳遞,一項提議必須在 72 小時內(考慮到全球的時差問題)沒有成員提出反對才能夠被採納,這些流程都讓時間週期變得更長。微服務

現在,Dubbo 項目已經畢業一年有餘,整個社區擁有 18 名 PMC 成員,57 名 committer,以及多達 370 名貢獻者,社區代碼比例已經超過 50%。在採訪中,北緯表示,過去一年,Dubbo 在多語言建設方面前後從社區收穫了 JS、Python、Erlang、PHP、Go 的實現,特別鄭重感謝公里網、樂信以及其餘開發者們,爲社區帶來了多語言支持。提到 Dubbo,你們第一個想到的可能仍是 Java,但目前 Dubbo go 已經在 1.5 版本追平 Dubbo java 2.7 的特性。目前正在和 Java 齊頭並進,一塊兒規劃 Dubbo 3.0 中雲原生的路線圖。

自 Dubbo 2.7 版本以後,整個發版節奏逐漸變慢,不少開發者也注意到「Dubbo 3.0 will come soon」的公告掛了好久。北緯表示,實際上是有意識放慢了發版節奏,追求功能的穩定,這不只僅是由於 Apache Dubbo 的深度用戶,好比工商銀行、攜程、滴滴、鬥魚、瓜子等對 Dubbo 的使用規模愈來愈大,整個阿里經濟體將來也會開始在內部核心電商業務陸續推動 Dubbo 和 HSF 的融合,Dubbo 的用戶越多,團隊的敬畏感越強烈。

在帶領 Dubbo 前進的過程當中,團隊也聽到了來自開發者社區的聲音,好比 Dubbo 和 Sping Cloud 是什麼關係?是否是二選一就夠了?Dubbo 和 gRPC 之間的差異是什麼?這是否是阿里的一個 KPI 開源項目?阿里內部用嗎?

阿里與 Dubbo 之間的關係

「事實上,從我負責這個項目以來,我我的的體感是你們一直比較擔憂這個項目能不能持續發展,會不會斷更。我也知道一些開發者在擔憂 Dubbo 只是阿里主導的 KPI 開源項目。」

根據 X-lab 開放實驗室最新發布的《2020 年微服務領域開源數字化報告》,Dubbo 的開源活躍度全球排名 693,在微服務框架中排名第五,僅今年參與過社區建設的開發者數量已經達到 500 多人。整個社區蓬勃發展,來自外部的代碼貢獻量已經超過來自阿里員工的貢獻量。

2.png 數據來源《2020 年微服務領域開源數字化報告》

在阿里巴巴雲原生公衆號後臺回覆「微服務報告」便可查看完整報告。

「我一直認爲社區很重要,單靠核心團隊的幾位工程師來作這件事情很是困難,一些想法也是咱們想不到的。現在,全國各地有上百家企業在使用 Dubbo,僅依靠咱們兩三位工程師的力量遠遠不夠,咱們但願社區內的開發者能夠更多地參與進來。」

一直以來,開源的理想狀態可能就是單純依靠情懷,但這真的很難作好,靠情懷的始終是少數人,尤爲是中國目前的開源遠未達到這種狀態,還處於發展過程當中。採訪中,北緯表示,對 Dubbo 而言,無論開發者最初進入並對項目有所貢獻的緣由是什麼。重要的是,咱們但願可以讓整個社區保持開放,即使個別工程師僅僅只是爲了往後找份工做來參與社區也沒有關係,我認爲這種想法很正常,畢竟貢獻項目會佔據開發者不少業餘時間,咱們也但願這個項目能夠對你們有所幫助。

此外,阿里巴巴內部也在採用 Dubbo 項目,而且開始逐漸向核心交易場景推動。在 Dubbo 最初的成長過程當中,阿里內部曾經提過「整個公司大統一,但願不要重複建設,但凡相同的項目都要合併」的想法。當時,淘寶的 HSF 項目也是一箇中間件服務框架,與 Dubbo 作的事情高度重合,因此當時表示要將兩個項目進行合併。

時至今日,HSF 和 Dubbo 在阿里經濟體內部都有落地的場景。北緯表示,選擇權由業務視本身的訴求來決定,技術上保證了框架之間的互操做。相對來講,電商場景裏 HSF 的使用是主流,而云的場景裏 Dubbo 使用更多。固然,對於這麼大規模的服務化場景,統一技術棧一直是咱們的訴求和目標。在雲原生時代 Dubbo 3.0 的定義中,咱們已經開始以開源的 Dubbo 做爲核心進行融合,並以此爲基礎定義雲原生場景中的關鍵特性,在集團部分電商業務上已經進入落地階段,後續也會跟你們分享咱們的實踐經驗。

如何看待 Dubbo 和 Spring Cloud 的關係?

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

現在,Spring Cloud 依託於 Spring 已經成爲 Java 開發的標準框架,這是不爭的

事實,並結合大量業界經驗逐漸抽象出一套微服務通用架構模式標準。這套標準的好處在於可讓開發者很是便捷地進行微服務軟件產品開發,且在整個 Spring 生態的加持下已經成爲開發者的「一攬子」解決方案。

相較之下,Dubbo 是阿里對微服務領域持續實踐的產品。在框架設計之初,擴展性、靈活性就被放在了一個很重要的位置,這也是爲何社區對 Dubbo 的熱情一直高漲的緣由。隨着 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 在註冊數據的模型上達成高度統一,複用同一套服務註冊中心,進一步簡化混布場景中的架構。

「咱們把選擇的自由留給用戶,這是 Dubbo 3.0 中的重要目標。」

此外,北緯整個團隊也在積極發展 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 和 gRPC?

Spring Cloud 和 Dubbo 之間部分互補可能說的通,但 Dubbo 和 gRPC 確實是極爲類似的。做爲高性能、開源且通用的 RPC 框架,gRPC 多年來受到了衆多開發者的歡迎和採納。

類似就免不了被開發者比較,對此,北緯很坦然:「咱們從不避諱 gPRC,它是一個使人尊敬的對手,是雲原生基礎設施之間通信協議的事實標準。gRPC 的發展以及 gRPC 每一年的會議,咱們一直都有關注。」

「咱們從 gRPC 身上學到最有價值的一點就是反思 Dubbo 2 中協議設計的不足,開始重視雲原生支持領域裏兩個重要的問題:多語言支持和網關 /Mesh 解析友好。」採訪中,北緯表示,在 Dubbo 3.0 中,新版本的協議是重中之重,除了解決上述兩個問題,對 gRPC 協議的兼容也是新協議的設計目標之一。

在雲原生時代,gRPC 做爲 RPC 框架走在了前面,這一塊短板在北緯看來是要儘快補齊的,而 Dubbo 的優點是不僅僅是一個 RPC,並且是一個有着強大治理能力的服務框架,能夠這麼說,Dubbo 是 gRPC with batteries。同時,Dubbo 在國內用戶羣體巨大,在業務向雲原生技術遷移的歷程中,Dubob 3.0 將能夠發揮出巨大做用。

Dubbo 的將來發展

現在,社區中的不少開發者都對 3.0 版本期待已久。北緯表示,3.0 版本的主基調就是雲原生支持,重點思考雲原生友好的新一代 RPC 協議、應用級服務註冊發現、K8s 原生服務發佈、Mesh 控制面 xDS 協議對接以及分佈式服務柔性等重磅級特性。

實際上,Dubbo 3.0 的功能會分階段進行,目前應用級服務發現已經在內部和一些頭部用戶的場景作試點,後續隨着項目的進展,團隊會第一時間發佈功能實現細節。「經過 Dubbo 3.0 的交付,咱們期待帶來一款向雲原生遷移友好的,對雲原生基礎設施友好的新一代服務框架體系。」

3.png

面向將來,Dubbo 項目總的發展基調仍是堅持合做開放的開源路線不動搖,追求更高質量和功能更完善的路線不動搖。目前,社區發展的重中之重是 Dubbo3.0 演進。在不久後的 9 月份, Dubbo3.0 應用級註冊發現將在阿里巴巴內部和開源側各公司落地。這不只是 Dubbo 邁向雲原生微服務的第一步,也是對接 K8s 註冊發現和跨框架 RPC 互通的前提。

就應用方而言,從接口級註冊發現到應用級註冊發現能夠顯著下降註冊中心和客戶端的內存壓力。今年雙 11,雲原生服務治理規則會把 Dubbo 多年以來在大規模高併發服務治理方面的最佳實踐融入雲原生。下一代協議將基於 http2/protobuf 帶來更好的生態和 Reactive 的全面支持,柔性加強所涵蓋的自適應策略和分佈式負載均衡將會在性能和穩定性上帶來更大的突破。北緯表示,在 Dubbo 3.0 發展過程當中,急需更多高質量社區力量加入,共同打造下一代的服務框架。

回到 Dubbo 重啓開源之時,生態相對薄弱。畢業 15 個月以後的今天,Dubbo 生態已經日益完善。

4.png (現在 Dubbo 豐富的擴展實現)

好比,多語言支持已經達到 6 種,30+ 生態子項目。在 Dubbo 主動集成周邊的同時,咱們也被第三方開源項目 Spring Cloud Sleuth、Zipkin、Skywalking、Envoy、tengine 等主動集成。

5.png

「或許現在的生態還不夠完善,但也是極大豐富了,我心中的完善是但願可以產出一個官方推薦的 Dubbo Stack,免除用戶選擇上面的煩惱。至於 Dubbo Stack 中是否都源自阿里,我卻是抱着順其天然的態度,這仍是須要數聽說話,誰家的組件在生產系統中運用最廣,咱們就推薦誰。總的來講,這件事情的決定權在社區和 Dubbo 用戶。」

嘉賓介紹

北緯,Dubbo 第二代掌門人,Apache Dubbo PPMC & Spring Cloud Alibaba 負責人。

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的公衆號。」

相關文章
相關標籤/搜索