Service Mesh 時代,Dubbo 架構該怎麼跟進?

發表於2019-06-18
原文連結:Service Mesh 時代,Dubbo 架構該怎麼跟進?,來自於微信公眾號:次靈均閣

作為 Duboo 核心開發者,請先簡單介紹下自己

答:大家好,我是小馬哥(mercyblitz),一名學習當爸爸的父親,Java 勸退師Apache Dubbo PMC、Spring Cloud Alibaba專案架構師,《Spring Boot 程式設計思想》的作者。目前主要負責集團中介軟體開源專案、微服務技術實施、架構衍進、基礎設施構建等。

Spring Cloud 和 Duboo 在微服務方面的優劣分別是什麼?

答:在 Java 生態中,Spring Cloud 和 Dubbo 都是微服務框架。前者被業界常作為 Java 微服務的首選框架,而後者有時被錯誤地解讀為服務治理的 RPC 框架。實際上,兩者在微服務架構中並沒有本質的差異,均是分散式應用服務治理的框架。

在開發體驗方面,Spring Cloud 開箱即用的元件讓人印象深刻。在 API 抽象和設計方面,流淌著 Spring 家族血液的 Spring Cloud 延續了父輩的榮耀。由此觀之,Dubbo 與其存在差距。

然而隨著實踐的不斷深入,Spring Cloud 功能的穩定性以及版本的相容性等問題較為突出。當應用叢集達到一定規模時,其分散式經驗上的短板也隨之暴露,尤其是 Spring Cloud Netflix 套件,比如 Eureka 與 Ribbon 之間的 90 秒延遲會影響服務呼叫的成功率,以及負載均衡演算法缺少權重無法幫助 JVM 預熱。簡言之,在服務治理方面,Spring Cloud 相較於 Dubbo 而言,並不算太成熟。如果大家有興趣瞭解更多的話,可參考「小馬哥技術週報」

總之,Spring Cloud 和 Dubbo 各有特色,過度地關注彼此優劣並不可取。為此,Spring Cloud Alibaba 專案綜合兩家之長,提供了一套名為 Dubbo Spring Cloud 的整容實現,使得 Dubbo 與 Spring Cloud 不再是互斥性選項。

請介紹下 Duboo 的現狀?

答:2019年5月16日,Apache 軟體基金會董事會決議通過了 Apache Dubbo 的畢業申請,這意味著 Apache Dubbo 正式成為 Apache 的頂級專案。Apache Dubbo 專案在 Github 上的 star 數已超過 2.7 萬,contributors 人數達到 202,Commiters 人數也升至 32 人,藉此機會感謝所有關係和參與 Apache Dubbo 建設的小夥伴。目前,專案主要包含三大核心的分支,均在並行開發。其中,2.6.x 處於維護狀態;2.7.x 聚焦雲原生微服務方向,3.0.x 則指定未來標準和技術走向。簡言之,Dubbo 不再是純粹的 Java 服務治理 RPC 框架,已經逐漸成為多語種 Cloud Native 基礎設施的中堅力量。

Duboo在成為Apache頂級專案的過程中,背後有哪些不為人知的故事?

答:Dubbo 在 Apache 從孵化到畢業,期間的確有太多不為人知的故事,這裡我簡單地介紹一下其中孵化過程:

  • 籌備期(2017.12-2018.2):最主要的工作是準備進入孵化器相關的材料,比如尋找合適的導師,編寫加入孵化器的提案等。
  • 初始期(2018.2-2018.5):主要完成的工作主要是完成智慧財產權的清理,郵件列表的建立,程式碼遷移等工作。
  • 首次 Release:Apache孵化專案第一個重要的里程碑,第一次Release非常關鍵,除了確保功能的穩定以外,最重要的就是需要確保引入的程式碼的許可證符合Apache的政策,Apache對於許可證有著明確的規定。
  • 社群發展(Community Building):也是作為一個Apache專案非常看重的一環。最不願意看到的就是一家公司獨大,控制整個專案,對於Dubbo來說,經過這麼多年的發展,在國內已經具備了一定的滲透率,有了不少使用者,但是他們就像花粉一樣散落在各個角落裡面,需要做的事情就是把他們都聚集起來。

在未來一年,Duboo的新特性路線圖可以簡單介紹下嗎?

答:由於 Dubbo 2.6.x 處於維護狀態,不會新增明顯的功能特性。

本年度主要的發力點在 Dubbo 2.7 這個版本上,該版本致力於 Cloud Native 以及微服務領域,大致的路線計劃為

  • 2.7.2 - Metrics、etcd 後設資料、nacos 配置與後設資料以及 2.6 相容
  • 2.7.3 - Cloud Native 序號產生器制、服務自省以及 Dubbo Proxy
  • 2.7.4 - K8s 原生支援(服務發現、後設資料儲存和配置推送)、Dubbo GO 以及 gRPC 整合
  • 2.7.5 - 服務治理規則支援 Pilot CRD
  • 2.7.6 - 控制面 xDS API 對接

Dubbo 3.0.0 M1 版本的核心特性圍繞在 RSocket、Reactive 以及非同步化上的支援。 M2 版本計劃將在 8 月釋出,主要提供對 HTTP/2 的支援和效能調優。接下來的 M3 版本將通過 HTTP/2 支援 gPRC 以及 Rocket 通訊協議。3.0.0 正式的釋出將安排在 2020 年的 2 月。

Duboo 開源以來,程式碼貢獻者中阿里本身的開發者佔絕大多數,這是否意味著來自阿里的需求會起主導作用?在後續的發展過程中,計劃如何引入阿里之外的開發者?

答:儘管目前 Apache Duboo 程式碼貢獻者主要來自於阿里的開發人員,不過這個比重正在迅速地變小,一方面說明 Dubbo 使用者人數在逐漸變大,專業程度在不斷地變深,同時,也說明有意主導並且貢獻的小夥伴越來越活躍。這無論對社群的發展,還是從業人員的職業技能均有裨益。因此,需求的來源不再已阿里為絕對主導,社群共建和共制的發展模式已成事實。

Service Mesh 時代,需要什麼樣的微服務框架?

答:哈哈,需要 Dubbo 這樣的框架(玩笑)。首先,個人並不是 Service Mesh 方面的專家,就目前所得到掌握的資訊,Service Mesh 並不算成熟的技術,換言之,目前還不是 Service Mesh 的時代,甚至我聽到不少的朋友由於效能和穩定性方面的原因,從該架構中退化,這也是 Dubbo 在 Service Mesh 方面的衍進相對緩慢的原因之一。當然,技術的發展總會是在掌聲伴隨著噓聲中前進,因此,個人對於 Service Mesh 的看法是謹慎樂觀的。

對於公司內部定製Dubbo而言,你有什麼建議嗎?

答:流水不腐戶樞不蠹,我希望這些公司能夠積極參與 Dubbo 社群的共建,或許這些定製化的場景也可以服務其他場景。大家互通有無,實現共同進步。

對於初級開發者而言,學習Duboo應該如何入手?對於資深開發者而言,怎樣研究Dubbo的原始碼更加高效?

答:對於初級開發者,我的建議是首先從 Apache Dubbo 官網(https://dubbo.apache.org)學習《使用者文件》,初步瞭解了 Dubbo 架構和特性後,再結合 Dubbo 官方樣例(https://github.com/apache/dub...)全面掌握 Dubbo 功能和最佳實踐。最後,參考官方部落格(http://dubbo.apache.org/zh-cn/blog/index.html),深度理解 Dubbo。

對於資深開發者,尤其是那些致力於貢獻的小夥伴,我建議參考《開發者文件》,掌握 Dubbo 設計和實現,並且結合 Dubbo 的原始碼鞏固學習,最好直接貢獻程式碼(在 GitHub Pull Request),戰勝心中一切的畏懼。如果仍不滿足於此,強烈推薦參考 Apache Dubbo PMC 商宗海(花名:詣極)編寫並即將出版的書籍 - 《深入理解 Apache Dubbo 與實戰》,從中本人也受益匪淺,建議小夥們入手。

你作為講師參加GIAC,對本次GIAC大會有何寄語?

答:非常感謝 GIAC 的主辦方給本人這次機會分享 Dubbo 相關的的議程,這也是我本人第二次在 GIAC 分享該主題了。我衷心地祝福 GIAC 影響力越做越大,希望能夠走出國門,成為具有國際化影響力的技術組織,向世界傳播技術和力量。

作為Duboo的開發者,你最喜歡的Java(Java8以後)特性是什麼?你最希望加入的Java特性是什麼?

答:Java 8 是 Dubbo 2.7 預設的語言級別,其中 Lambda 表示式以及 Stream API 被廣泛地使用。除此之外,本人同樣偏好使用 CompletableFuture 作為並行程式設計的 API。我最希望 Java 增加 JVM 級別的協程支援。

簡單介紹下你自己的從業經歷?

答:今年是我從業的第十二個年頭,這些年一直在從事 Java 研發。首個僱主是一家外企公司,為其服務了三年。外企的工作相對輕鬆,擁有充分的自主時間提升技能,同時也有機會提升英語水平。期間通過了 SUN Java(SCJP、SCWCD、SCBCD)以及 Oracle OCA 等的認證,儘管這些證照並沒有受到國內僱主的重視,不過對我後續的職業產生了深遠的影響。當然,事情並不是總是積極正面,東西方文化差異,以及部分外籍同事的傲慢與偏見著實讓本人對西方的技術和文化重新開始審視。既然無法改變,那麼離開並繼續深造或許是必然的選擇,希望有一天能夠通過共同的努力,讓世界看到中華的進步。於是,我的第一份工作就在 2010 年 10 月 1 號畫上了句點。迎接我的是第二份工作,至今也快九個年頭。這幾年,我經歷了很多、學到了很多,也成長了很多,豈能盡如人意,但求無愧我心。不可否認的是,儒家思想對我的影響最為深刻,它讓我學會獨立、理性以及辯證的思考,培養我處變不驚的人生態度,直接或間接地提升了專業素質。經過數年的沉寂,我也明確了自己的方向,輾轉投入開源社群的建設。不過,縱使渾身是鐵能打幾根釘,開源社群的發展需要更多的能人蔘與,知之者不如好之者,好之者不如樂之者。然而現實的情況又有些殘酷,不少的年輕人在經濟的壓力下,逐漸失去對技術的追求。於是從 2016 年開始,我便嘗試做一些技術分享,希望能夠幫助到部分年輕從業人員,使他們對技術產生興趣。隨後,我又著手編寫《Spring Boot 程式設計思想》,希望讀者能夠理解規範和基礎的重要性,如果讀者從中能夠培養自己系統化的知識體系或者思維方式,那就善莫大焉了。我也時常鼓勵更多的小夥伴多多分享,無論是免費,還是收費。同時,注重智慧財產權的保護,樹立良好的生態環境。當然,我的第二份職業尚未告一段落,或許等它結束之際,方可“蓋棺定論“。總之,但行好事,莫問前程。

書籍推薦

-《Spring Boot 程式設計思想(核⼼心篇)》 https://item.jd.com/12570242....

本書全名為《Spring Boot 程式設計思想》,是以 Spring Boot 2.0 為討論的主線,討論的範圍將涵蓋 Spring Boot 1.x 的所有版本,以及所關聯的 Spring Framework 版本,致力於:

  • 場景分析:掌握技術選型
  • 系統學習:拒絕淺嘗輒止
  • 重視規範:瞭解發展趨勢
  • 原始碼解讀:理解設計思想
  • 實戰演練:鞏固學習成果

-《Spring Cloud 微服務實戰》https://item.jd.com/12172344....
-《深⼊入理理解Kafka:核⼼心設計與實踐原理理》 https://item.jd.com/12489649....
-《未來架構 從服務化到雲原⽣生》 https://item.jd.com/12498217....
-《高可⽤可伸縮微服務架構:基於Dubbo、Spring Cloud和Service Mesh》https://item.jd.com/12585284....
-《Kubernetes權威指南:從Docker到Kubernetes實踐全接觸》https://item.jd.com/12601558....
-《Java程式設計⽅方法論:響應式RxJava與程式碼設計實戰》 https://item.jd.com/12615848....

相關文章