天天看點

Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

背景

2014 年,Spring Boot 1.0 釋出。Spring Boot 的釋出絕對是 Pivotal 曆史上具有裡程碑意義的事件,它讓我們能夠非常簡便地開發 Spring 應用,屏蔽了各種配置檔案和底層實作,提供 AutoConfiguration,Factory Loading Mechanism, Embedded Servlet Container,Conditional Annotation 等諸多特性。目前圍繞着 Spring Boot 的生态項目已經太多了,包括 Spring Cloud,Spring Cloud Gateway,Spring Initializr,Spring Cloud Stream, Spring Cloud Data Flow。周邊幾乎所有的第三方開源項目都建立了 Spring Boot 對應的 Starter: Kafka Starter,RabbitMQ Starter,MyBatis Starter,Dubbo Starter。

這張圖可以很好地說明 Spring Boot 釋出後代碼的簡化:

Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

從 JetBrains 釋出的 2019 年 Java 生态報告來看,

Spring Boot

已經成為了最流行的 java web 架構:

Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

2016 年,阿裡全面擁抱 Spring Boot,開始進行 Spring Boot 與阿裡中間件的整合。開發了 spring-boot-starter-sentinel, spring-boot-starter-diamond, spring-cloud-stream-binder-metaq 等 Starter。業務團隊開始嘗試引用 Spring Boot 替換原先的 Webx(Spring MVC)。

Spring Cloud 是 Pivotal 推出的基于 Spring Boot 用于開發分布式應用的一款開源項目,其内部定義了分布式開發所需的規範: 服務注冊/發現,服務熔斷,分布式配置,服務調用,服務路由,分布式消息,消息總線等。

這些規範阿裡也有對應的實作,我們決定提供基于阿裡中間件的 Spring Cloud 規範實作并開源 - Spring Cloud Alibaba。

進入 Spring Cloud 孵化器

有了這個想法之後,團隊開始跟 Pivotal 進行溝通。我們在 GitHub 上找到了 Spring Cloud Leader - Spencer Gibb 的郵箱,介紹了阿裡内部的幾個項目,表示想融入到 Spring 社群裡。

2017 年 12 月,Spring Cloud Alibaba 順利進入 Spring Cloud 孵化器。

一開始這個項目的名字是 spring-cloud-alibabacloud。兩個 cloud 讀起來有點拗口,後來去掉了最後的那個 cloud,Github 支援 rename 功能,整個過程是無感覺的。現在進入

https://github.com/spring-cloud-incubator/spring-cloud-alibabacloud

位址還會重定向到我們的倉庫。

之後,Nacos,Sentinel 和 Seata 相繼開源。Nacos 是阿裡巴巴軟負載團隊開發的 Diamond 和 Vipserver 的集合,Sentinel 是阿裡巴巴高可用團隊的穩定性利器,Seata 是 GTS 團隊開源的分布式事務解決方案。

同時我們也把阿裡雲的一些服務跟 Spring Cloud 體系進行了整合,比如 OSS 對象存儲,SMS 短信服務,SchedulerX 分布式任務排程,讓開發者可以更友善地使用阿裡雲服務。

版本釋出

版本釋出總體比較順利。Spring 社群在版本釋出這方面跟 Apache 社群相比,沒有那麼嚴格的規範。基本上都是開發 & 測試結束後,在 Slack 上預約時間,提供版本的 Release Note,Blog,然後讓 Spencer 進行 Release。Release 到 Central 後,再進行驗證。

Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

Spring Cloud Alibaba 在孵化器内一共 Release 了 3 個版本。這是每次發版對應的 Blog:

這裡不得不提一下,因為 Spring Boot 相容性沒有做好,對不同的 Spring Cloud 版本,我們都需要 release 對應的版本(0.1.x 對應 Spring Cloud Edgware,0.2.x 對應 Spring Cloud Finchley)。

2018 年在北京參加 Spring One Tour 的時候,還特地跟 Spencer 吐槽了這塊相容性問題。

Spring Cloud Alibaba 從孵化到 "挂牌" 之旅
Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

參加 Spring One Tour 的當天晚上在酒店跟 Josh Long 介紹 Spring Cloud Alibaba,之後 Josh Long 制作 Bootiful Alibaba 視訊:

https://spring.io/blog/2018/12/26/spring-tips-bootiful-alibaba
Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

2019 年 4 月在西溪園區跟 Josh Long 示範 Dubbo Spring Cloud & Spring Cloud Stream RocketMQ Binder:

Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

Spring 社群畢業

2019 月 7 月 24 日,Spring 官方宣布 Spring Cloud Alibaba 畢業,倉庫遷移至 Alibaba Github OSS 下。這意味着 Spring Cloud Alibaba 是國内首個進入 Spring 社群的開源項目。

這是 Spring Cloud Alibaba 提供的 feature:

  • 服務限流降級:使用 Sentinel 進行流量控制,熔斷降級以及系統保護等多個次元保護服務穩定性
  • 服務注冊與發現:使用 Nacos 适配 Spring Cloud 服務注冊與發現标準,預設內建了 Ribbon 這個用戶端負載均衡元件
  • 分布式配置管理:以 Nacos 作為資料存儲支援分布式系統中的外部化配置,配置更改時自動重新整理
  • 事件驅動:使用 Spring Cloud Stream RocketMQ Binder 來建構事件驅動的微服務執行個體
  • 消息總線:使用 Spring Cloud Bus RocketMQ 連接配接分布式系統中的各個節點
  • 分布式事務:使用 Seata 高效并且對業務零侵入地解決分布式事務問題
  • Dubbo RPC:擴充 Spring Cloud 服務調用協定,可使用 Spring Cloud 用戶端調用 Dubbo 服務
  • 阿裡雲 OSS 內建: 使用阿裡雲 OSS 服務內建 Spring Resource 資源

和 Spring Cloud Alibaba 有關的技術文章:

Dubbo Spring Cloud 重塑微服務治理 Spring Cloud Alibaba基礎教程 Spring Cloud Alibaba 系列教程 microservices-with-spring-cloud-alibaba Spring Tips: Bootiful Alibaba Spring Cloud Stream 體系及原理介紹 幹貨|Spring Cloud Bus 消息總線介紹

挂牌 Spring 官方

2019 月 10 月 3 日,Spring Cloud Alibaba 正式 "挂牌" Spring 官方,成為推薦的 Spring Cloud 規範實作之一。

https://spring.io/projects/spring-cloud-alibaba
Spring Cloud Alibaba 從孵化到 "挂牌" 之旅

Spring Cloud Alibaba 的發展曆程回顧:

  • 2018 年 7 月,Spring Cloud Alibaba 正式開源,進入 Spring Cloud 孵化器。
  • 2018 年 10 月,Spring Cloud Alibaba 釋出開源後的第一個版本 0.1.0 & 0.2.0 (适配 Spring Cloud Edgware & Finchley ),包含 Nacos Config, Nacos Discovery、 Sentinel 以及 OSS 4 個元件。
  • 2018 年 12 月,Spring Cloud Alibaba 釋出第二個版本 0.1.1 & 0.2.1,新增 Spring Cloud Stream RocketMQ Binder 和 Spring Cloud Bus RocketMQ 元件。
  • 2019 年 4 月,Spring Cloud Alibaba 釋出 Preview Release 版本 0.9.0, 0.1.2 & 0.2.2 (首次适配 Spring Cloud Greenwich ),新增 Dubbo Spring Cloud、Seata 元件。颠覆性地使用 Spring Cloud 用戶端調用 Dubbo 服務
  • 2019 年 7 月,Spring Cloud 官方宣布 Spring Cloud Alibaba 畢業。
  • 2019 月 8 月,Spring Cloud Alibaba 釋出畢業後的第一個版本 1.5.0, 2.0.0 & 2.1.0。新增 spring-cloud-alibaba-sentinel-gateway 子產品以完善 Sentinel 對 Spring Cloud 體系 Gateway 的支援。

誰在使用 Spring Cloud Alibaba

目前已有不少企業使用者在使用 Spring Cloud Alibaba,包括愛回收、東家、Acmedcare+、生學教育、聯想雲、鳳凰網、平安科技。我們也在社群發起了“who is using Spring Cloud Alibaba”的issue,可以去這個頁面了解各家企業的使用場景。

https://github.com/alibaba/spring-cloud-alibaba/issues/301

緻謝

感謝 Alibaba 和 Spring 社群開源的項目:

Apache Dubbo Seata Sentinel Nacos Apache RocketMQ Spring Cloud

感謝所有的 Spring Cloud Alibaba Contributors:

@fangjian0423, @flystar32, @mercyblitz, @pbting, @xiaolongzuo, @zhendong590, @zhaoyuguang, @xiejiashuai,@spencergibb, @Rivers-Shall, @chuntaojun, @slievrly, @liudaomanbu, @zkzlx, @pigxcloud, @ly641921791, @echooymxq, @mostcool, @liuxx001, @lichen782, @yunzheng1228, @tigerMoon, @wangxing-git, @pyhblacksky, @purgeyao, @lyuzb, @eacdy, @cdfive, @AbelSara, @jsbxyyx, @yanglbme, @xingfudeshi, @pengzai170, @george510257, @carlWangTao, @JevonYang, @HaojunRen, @yidadi, @wzlee, @sundong1982, @sczyh30, @panda-luo, @lujian0571, @lovepoem, @liaozan, @kaiguoyuanshuai, @justlive1, @hero-zhanghao, @codewaltz1994, @caojiele, @bluesword12350, @MaoJianwei, @JakeConnors376W, @Harris2012

本文作者:方劍,花名洛夜,GitHub ID @fangjian0423,開源愛好者,阿裡巴巴進階開發工程師,阿裡雲産品 EDAS 開發,Spring Cloud Alibaba 開源項目負責人。