1. 程式人生 > >阿里巴巴的微服務開源之路

阿里巴巴的微服務開源之路

開發十年,就只剩下這套架構體系了! >>>   

2019阿里雲峰會·北京開發者專場

俠之大者,為國為民。

在金庸小說中,郭靖和黃蓉是“俠之大者,為國為民”的典範,他們以布衣之身幫助宋軍守護襄陽十餘年。

技術的世界裡,並無大小之分。

但當一群程式設計師由服務公司內部轉變為社會的程式設計師,將技術以開源的方式與社群的開發者一同協作、改進和使用時,他們便被賦予了更大的責任和期待。

阿里雲智慧中介軟體的程式設計師們正和社群的開發者們一起,用鍵盤敲下國內微服務開源專案的過去和未來。

國內首個非 Hadoop 生態體系的 Apache 社群頂級專案

2016年的那屆雙11,RocketMQ 團隊首次將低延遲儲存解決方案應用於雙11的支撐,經受住了流量的大考,整個大促期間,99.996%的延遲落在了10ms以內,完成了保障交易穩定的既定目標。

對於讀寫比例幾乎均衡的分散式訊息引擎來說,這一技術上的突破,即便是放在全球範圍內,也絕對是值得稱讚的。

RocketMQ 團隊和社群開發者們

另一邊,在歷時3個月的開源重塑後,RocketMQ 團隊啟動了向 Apache 軟體基金會的捐贈之路,但邁出這一步並不容易。

“當時國內的開源氛圍還沒有現在那麼活躍,開源之後,很多設計文件、程式碼質量,以及社群建設還不夠理想。我們一直期待,國內的開源專案和開源社群也可以在世界的開源舞臺上發揮讓人矚目的價值,希望更多“中國智造”的開源專案成為世界級的開源專案。”阿里雲智慧高階技術專家馮嘉回憶道。

經過近一年的努力,在2017年9月25日,Apache軟體基金會官方宣佈,阿里巴巴捐贈給 Apache 社群的開源專案 RocketMQ 從 Apache社群正式畢業,成為 Apache 頂級專案(TLP),這是國內首個非 Hadoop 生態體系的 Apache 社群頂級專案。

值得一提的是,根據專案畢業前的統計,RocketMQ 有百分八十的新特性與生態整合來自於社群的貢獻。

畢業一年多後,RocketMQ 已經覆蓋網際網路金融等領域60%以上的訊息場景,並被應用到金融、電力、物流、遊戲、電子商務、共享出行等十幾個行業。然而,隨著雲端計算、大資料、人工智慧等技術在全球範圍的深入推進,催生出瞭如IoT、區塊鏈、AI、邊緣計算等新的應用場景,架構上如何進一步演進以更好的適應新的場景,服務好下一個十年,這是即將到來的 RocketMQ 5.0 要解決的問題。

訊息領域的里程碑事件

RocketMQ 從 Apache 社群正式畢業的同時,訊息領域出現了另一件里程碑事件,分散式訊息領域的國際標準 OpenMessaging 開源專案正式入駐Linux基金會,這是國內首個在全球範圍發起的分散式計算領域的國際標準。

訊息通訊已經成為現代資料驅動架構的關鍵環節,但在全球範圍內,訊息領域仍然存在兩大問題:

一是,缺乏供應商中立的行業標準,導致各種訊息中介軟體的高複雜性和不相容性,相應地造成了公司的產品低效、混亂和供應商鎖定等問題。

二是,目前已有的方案框架並不能很好地適配雲架構,即非雲原生架構,因此無法有效地對大資料、流計算和物聯網等新興業務需求提供技術支援。

這也是 RocketMQ 開源過程中,開發者和合作夥伴經常會提到的問題:“在訊息領域,市場上出現了各類不同的開源解決方案,這導致了使用者更高的接入和維護成本,為了確保各個訊息引擎間能正常通訊,還要投入大量的精力去做相容。”

這時候,建立一套供應商中立,和語言無關的訊息領域的事實標準,成為各社群成員共同的訴求。

阿里雲智慧研究員蔣江偉 & CNCF 執行總裁 Dan Kohn

此後,阿里巴巴發起 OpenMessaging 專案,並邀請了雅虎、滴滴出行、Streamlio 共同參與,一年後,參與OpenMessaging 開源標準社群的企業達20家之多,包括阿里巴巴、Datapipeline、滴滴出行、浩鯨科技、京東商城、科大訊飛、青雲QingCloud、Streamlio、VIPKID、微眾銀行、Yahoo、中國移動蘇州研發中心等(按首字母排序),此外,還獲得了 Apache RocketMQ、Apache Pulsar 等頂級訊息開源廠商的支援。

相比於開源一個分散式訊息專案,一套開源標準能被各家廠商所接受,對整個國內開源領域而言,是更具有里程碑意義的事件。

從微服務框架到微服務生態

Dubbo 是阿里巴巴於2012年開源的分散式服務治理框架,是國內影響力最大、使用最廣泛的開源服務框架之一。在2016年、2017、2018年開源中國發起的最受歡迎的中國開源軟體評選中,連續三年進入 Top10 名單。2019年2月 Dubbo 釋出了2.7.0,這一版本將用於 Apache 基金會的正式畢業。(已進入 Near Graduation 階段)

Dubbo 團隊和社群開發者們

從 Apache 孵化器畢業,除了有個名譽,對專案之後的維護、發展有什麼影響?

“從孵化器畢業是一種榮譽,但這並不是結束,而是另一種開始。這有點像求學,畢業並不意味著學習上的中斷,而是發揮更大社會價值的開始。畢業也更像是一個成人禮,意味著Dubbo 團隊已經符合Apache對一個成熟開源專案的要求,並開始具備獨立發展的能力。”阿里雲智慧高階技術專家北緯在接受媒體採訪時回答道。

來自 Dubbo 官網首頁

截至目前,Dubbo 已收穫 2.5w+ star,在 GitHub 所有 Java 專案中排名前十,並有越來也多的企業使用者選擇 Dubbo 作為自己的微服務治理框架。但是,隨著微服務化的逐漸深入,Dubbo 提供的能力逐漸無法滿足微服務各個方面的需求。

阿里雲智慧技術專家望陶在一次直播中分享道:“Dubbo 是一個微服務框架,幫助開發者快速構建高效能的微服務應用。但在 API Gateway,熔斷限流,分散式監控,分散式事務等方面,缺乏一套比較完整的圍繞 Dubbo 的解決方案,基本上是各個公司自研,或者需要調研外面開源的各種框架進行調研選型,花費了比較大的時間和精力在這上面,卻無法形成一套體系化的方案。”

因此,我們做了進一步的演進,即從微服務框架演進到微服務生態。

通過和成熟的開源方案做整合,形成一個完整的微服務生態,組成 Dubbo Ecosystem,開發者無需為現有的系統做出過多的修改,就能快速開發微服務應用。

Dubbo Ecosystem 的概念得以提出,離不開 2018 年夏天開源的兩大微服務元件。

技術人的仲夏之夜

2018年夏天,國內開源領域,迎來了兩位新成員。

作為微服務和雲原生生態下的兩款重要開源元件,Nacos 主打雲原生應用中的動態服務發現、配置和服務管理,Sentinel 則是聚焦在限流和降級兩個方面。

Nacos 和 Sentinel 均是在阿里近10年的核心業務場景下沉澱所產生的,他們的開源是對微服務和元原生領域開源技術方案的有效補充,同時也非常強調融入開源生態,除了相容 Dubbo,也支援 SpringCloud 和 Kubenetes 等生態,以增強自身的生命力。

“阿里巴巴早在 2007 年進行從 IOE 集中式應用架構升級為網際網路分散式服務化架構的時候,就意識到在分散式環境中,諸如分散式服務治理,資料來源容災切換、異地多活、預案和限流規則等場景下的配置變更難題,因為在一個大型的分散式系統中,你沒有辦法把整個分散式系統停下來,去做一個軟體、硬體或者系統的升級。”阿里雲智慧高階技術專家坤宇在 QCon 的現場分享道。

Nacos Map

相比其他服務配置中心開源方案,Nacos 的起步雖然晚了點,但除了配置中心,他還提供了動態服務發現、服務共享與管理的功能,在大規模場景下具備更優秀的效能,在易用性上更便捷,分散式部署上更靈活。

Nacos 支援多種啟動模式,使用者可以根據業務場景自由選擇,將各個功能模組,如註冊中心和配置中心,分開部署或者合併部署,從而能夠完整支援小型創業公司成長到大型企業,微服務全生命週期的演進。

截止到目前,已經有40多家企業將 Nacos 部署到生產環境中,例如 虎牙直播 就是最早一批將 Nacos 大規模引入到生產環境的典型使用者。

虎牙分享現場@廣州

“虎牙關注 Nacos 是從v0.2 開始的,我們也參與了社群的建設,可以說是比較早期的企業使用者。引入Nacos前,我們也對比了Spring Cloud Config Server、ZooKeeper 和 ectd ,總體評估下來,基於我們微服務體系現狀以及業務場景,決定使用 Nacos 作為服務化改造中服務註冊和服務發現的方案。使用過程中,我們發現,隨著社群版本的不斷更新和虎牙的深入實踐,Nacos 的優勢遠比調研過程中發現的多。”虎牙基礎保障部中介軟體團隊負責人張波在一次開發者活動上分享道。

巧的是,一邊是 Nacos宣佈開源,並被列入 CNCF 雲原生全景圖,另一邊是 Spring Cloud 生態下的服務註冊和發現元件 Netflix Eureka 宣佈停止開源投入,勇敢者的遊戲充滿了變數,但在 Nacos 團隊看來,這場遊戲自己可以走到最後,因為我們並不是一個人在戰鬥,Nacos 只是阿里眾多開源專案中的一員,隨後還會有更多的開源專案反哺給社群,形成生態,例如輕量級限流降級元件 Sentinel。

Aliware Open Source•深圳站現場

2018年7月29日,AliwareOpen Source•深圳站現場,只能容納400人的場地,來了700多位開發者。阿里雲智慧高階技術專家子矜在現場宣佈了輕量級限流降級元件 Sentinel 的開源。

Sentinel 經歷了10年雙11的考驗,覆蓋了阿里的所有核心場景,也因此積累了大量的流量歸整場景以及生產實踐。Sentinel 的出現,離不開阿里歷屆高可用架構團隊的共同努力。

“在雙11備戰中,容量規劃是最重要也是最具挑戰的環節之一。從第一年開始,雙11的0點時刻就代表了我們的歷史最高業務訪問量,它通常是日常流量的幾十倍甚至上百倍。因此,如何讓一個技術和業務持續複雜的分散式站點去更平穩支撐好這突如其來的流量衝擊,是我們這10年來一直在解的題。”阿里雲智慧高可用架構團隊資深技術專家遊驥在一次雙11備戰結束後分享道。

這10年,容量規劃經歷了人工估算、線下壓測、線上壓測、全鏈路壓測、全鏈路壓測和隔離環境、彈性伸縮相結合的5個階段。2013年雙11結束後,全鏈路壓測的誕生解決了容量的確定性問題。作為一項劃時代的技術,全鏈路壓測的實現,對整個集團而言,都是一件里程碑事件。

2014年,高可用架構團隊獲得集團 CTO 大獎

隨後,基於全鏈路壓測為核心,打造了一系列容量規劃相關的配套生態,提升能力的同時,降低了整個環節的成本、提升效率。隨著容量規劃技術的不斷演進,2018年起,高可用架構團隊希望可以把這些年在生成環境下的實踐,貢獻給社群,之後便有了 Sentinel 的開源。

Sentinel 開源後僅兩個月,便被列入雲原生全景圖譜,位於編排和管理模組象限中,同時被列入雲原生全景圖譜的還有提供應用架構自動探測、故障注入式高可用能力演練和一鍵應用限流降級等功能的應用高可用服務 AHAS

近期,Sentinel 貢獻的spring-cloud-circuitbreaker-sentinel模組正式被社群合併至Spring Cloud Circuit Breaker,由此,Sentinel 也加入了 Spring Cloud Circuit Breaker 俱樂部,成為 Spring Cloud 官方的主流推薦選擇之一。

Spring Cloud 官方推薦的微服務方案不止 Sentinel 一個,還有 Spring Cloud Alibaba.

2018年,中國的 Java 圈發生了一件大事。

Spring Cloud 聯合創始人 Spencer Gibb 在 Spring 官網的部落格頁面宣佈:阿里巴巴開源 Spring Cloud Alibaba,併發布了首個預覽版本。隨後,Spring Cloud 官方 Twitter 也釋出了此訊息。

來自 Spring Cloud 官方 Twitter

可能是受到 Spring Cloud Netflix 減少開源投入的影響,Spring Cloud Alibaba 開源後的熱度超出了阿里巴巴高階技術專家姬望的預期。

在接受開源中國採訪的過程中,姬望認為“Spring Cloud Alibaba 是中國 Java 開發者的福音,彌補了 Spring Cloud 原生實現在大規模叢集場景上的侷限性。Spring Cloud 規範的實現目前有很多,比如 Netflix 有自己的一整套體系,Consul 支援服務註冊和配置管理,ZooKeeper 支援服務註冊等。但每套實現或多或少都有各自的優缺點,或許大多數 Spring Cloud 使用者很難體會到 Netflix OSS 等實現的侷限性,無論是服務發現、分散式配置,還是服務呼叫和熔斷都不太適合大規模叢集場景,比如我們內部也遇到 Eureka 效能問題。因此,我們將自身的超大規模叢集經驗與強大的 SpringCloud 生態整合,實現強強聯合,希望能對業界會產生一些積極的化學變化。”

夏天過後,開源的熱度仍在延續

效率的好處在於,我們可以把自己的注意力和時間聚焦在更需要創造力的事情上,做更有成就感的事情。對於工作在工程領域的開發者們而言,他們的效率意識更強。

2018年9月,阿里將內部廣泛使用的 Java 線上診斷工具進行開源,取名 Arthas (阿爾薩斯)。也許是擊中了開發者線上排查問題的痛點,Arthas 在距離開源後的第一個 Release 版釋出僅 147 天,就獲得了超過 1w 的 star 數,並有40多位 Contributors 參與開源貢獻。

Arthas Contributors

從中,我們不僅看到 Arthas 在開發者群體中的受歡迎程度,也發現越來越多的國內開發者開始擅於使用開源技術加速業務發展,更是不禁暢想起將來會有更多國內的優質開源專案獲得全球開發者的關注和喜愛。

技術領域,一切 里程碑 的達成,都源於一份技術情懷。

阿里雲智慧技術專家斷嶺回憶到:“Arthas 在阿里巴巴內部起源於2015年,當時微服務方興未艾,我們團隊一方面專注 Spring Boot 的落地,提高開發效率。另外一方面,希望可以提高技術團隊線上排查問題的能力和效率。當時,我們經過選型討論,選擇基於 Greys (Greys 是阿里巴巴杜琨@oldmanpushcart 開發的),一款 Java 開源線上問題診斷工具來開發,以提供更好的應用診斷體驗。”

我們在使用者體驗上做了大量的改進:彩色UI、Web Console 和內網一鍵診斷等。慢慢的,Arthas 成為阿里巴巴很多技術同事線上診斷問題的必備工具。儘管 Arthas 在阿里內部廣受好評,但只是一個自用的工具。取之開源,用之開源,因此我們在2018年9月28日,正式開源了 Arthas,希望可以幫助 Java 開發人員提升診斷效率。

隨著越來越多的開發者開始使用 Arthas,眾多開發者效率工具將 Arthas 內建到自己的產品中,豐富了 Arthas 的接入和開啟方式,例如 IDE 外掛 Cloud Toolkit

時間來到2019年。

阿里雲智慧高階開發工程師煊檍在內網分享到:分散式事式問題一直是應用開發過程中的技術癢點。不敢說是痛點,因為長久以來,大家普遍對分散式事務問題的應對策略還是:能不用就不用,儘量繞開。但在微服務架構普遍落地的今天,分散式事務問題越來越繞不開,解決方案不是沒有,但要麼效能差,要麼侵入性高,不容易落地。總之,是有點“不爽”。

宣佈 Fescar 開源的活動現場

而這種“不爽”集中反映在了分散式事務開源中介軟體 Fescar 上。當阿里雲智慧高階開發工程師清銘在2019年1月 RocketMQ Meetup 上宣佈分散式事務中介軟體 Fescar 正式開源後的一週內,Fescar 便收穫了3000+ star,社群討論的 issue 達58個。隨後,Fescar 專案組整理並回答了開發者們集中關心的13個問題,例如 Fescar 的誕生背景、適用場景,和其他開源分散式事務方案之間的差別等。

阿里巴巴中介軟體團隊於2014年釋出 TXC(Taobao Transaction Constructor),開始為集團內應用提供分散式事務服務。2016年,TXC 經過產品化改造,以 GTS(Global TransactionService)的身份上線阿里雲,成為當時業界唯一一款雲上分散式事務產品,以阿里雲公有云和專有云解決方案的形式,交付給眾多外部客戶,並得到了客戶的一致認可。2019 年,基於 TXC 和 GTS 的技術積累,中介軟體團隊發起了開源專案 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社群一起共建分散式事務解決方案。

TXC/GTS/Fescar 一脈相承,為解決微服務架構下的分散式事務問題交出了一份與眾不同的答卷。而Fescar 的願景是讓分散式事務的使用像本地事務的使用一樣簡單和高效。最終的目標是希望可以讓 Fescar 適用於所有的分散式事務場景。

阿里巴巴的開源之路仍在延續。

恰逢其時,阿里雲峰會·北京的開發者專場現場,阿里雲智慧資深技術專家李三紅宣佈,阿里開源 Open JDK 長期支援版本 Alibaba Dragonwell,作為 JCP 最高執行委員會唯一的中國企業,將更主動的參與到 Java 生態的維護工作中。


原文連結
本文為雲棲社群原創內容,未經