當前位置:
首頁 > 科技 > Service mesh時代,Dubbo架構該怎麼跟進?

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

導讀:6月21-23日,2019 GIAC全球互聯網架構大會將於深圳舉行。GIAC是面向架構師、技術負責人及高端技術從業人員的年度技術架構大會,是中國地區規模最大的技術會議之一。今年GIAC邀請到了眾多佈道師、明星講師以及105位來自Google、微軟、Oracle、eBay、百度、阿里、騰訊、商湯、圖森、位元組跳動、新浪、美團點評等公司專家出席。

在大會前夕,高可用架構採訪了本屆 GIAC Java分論壇講師小馬哥,就目前大家廣泛關注的Dubbo/微服務相關的問題進行了訪談。

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

打開今日頭條,查看更多圖片

Java 勸退師,Apache Dubbo PMC、Spring Cloud Alibaba 項目架構師,《Spring Boot 編程思想》的作者。目前主要負責集團中間件開源項目、微服務技術實施、架構衍進、基礎設施構建等。通過 SUN Java(SCJP、SCWCD、SCBCD)以及 Oracle OCA 等的認證。

鄧啟明:小馬哥您好,我是高可用架構的編輯鄧啟明,很高興採訪到您。請先簡單介紹下自己。

小馬哥:大家好,我是小馬哥(mercyblitz),一名學習當爸爸的父親,Java 勸退師 (https://www.douyu.com/mercyblitz),Apache Dubbo (https://dubbo.apache.org/) PMC、Spring Cloud Alibaba (https://github.com/spring-cloud-incubator/spring-cloud-alibaba)項目架構師,《Spring Boot 編程思想》的作者。目前主要負責集團中間件開源項目、微服務技術實施、架構衍進、基礎設施構建等。

鄧啟明:簡單介紹下你自己的從業經歷?

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

鄧啟明:請介紹下 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 服務治理 PRC 框架,已經逐漸成為多語種 Cloud Native 基礎設施的中堅力量。

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

小馬哥:儘管目前 Apache Duboo 代碼貢獻者主要來自於阿里的開發人員,不過這個比重正在迅速地變小,一方面說明 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 月。

鄧啟明: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 而言,並不算太成熟。如果大家有興趣了解更多的話,可參考「小馬哥技術周報」 (https://github.com/mercyblitz/tech-weekly)。

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

鄧啟明:Duboo在成為Apache頂級項目的過程中,背後有哪些不為人知的故事?

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

* 籌備期(2017.12-2018.2):最主要的工作是準備進入孵化器相關的材料,比如尋找合適的導師,編寫加入孵化器的提案等。

* 初始期(2018.2-2018.5):主要完成的工作主要是完成知識產權的清理,郵件列表的創建,代碼遷移等工作。

* 首次 Release:Apache孵化項目第一個重要的里程碑,第一次Release非常關鍵,除了確保功能的穩定以外,最重要的就是需要確保引入的代碼的許可證符合Apache的政策,Apache對於許可證有著明確的規定。

* 社區發展(Community Building):也是作為一個Apache項目非常看重的一環。最不願意看到的就是一家公司獨大,控制整個項目,對於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 (http://dubbo.apache.org/))學習《用戶文檔》,初步了解了 Dubbo 架構和特性後,再結合 Dubbo 官方樣例(https://github.com/apache/dubbo-samples)全面掌握 Dubbo 功能和最佳實踐。最後,參考官方博客(http://dubbo.apache.org/zh-cn/blog/index.html),深度理解 Dubbo。

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

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

小馬哥:Java 8 是 Dubbo 2.7 默認的語言級別,其中 Lambda 表達式以及 Stream API 被廣泛地使用。除此之外,本人同樣偏好使用 CompletableFuture 作為並行編程的 API。我最希望 Java 增加 JVM 級別的協程支持。

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

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

本屆GIAC Java專場/微服務/Service Mesh/Cloud Native的精彩議題如下:

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 高可用架構 的精彩文章:

專訪微軟亞洲研究院首席研發經理鄒欣:AI 時代程序員將往哪走?

TAG:高可用架構 |