背景

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 发布后代码的简化:

从 JetBrains 发布的 2019 年 Java 生态报告来看,Spring Boot 已经成为了最流行的 java web 框架:

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 在孵化器内一共 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 One Tour 的当天晚上在酒店跟 Josh Long 介绍 Spring Cloud Alibaba,之后 Josh Long 制作 Bootiful Alibaba 视频:
https://spring.io/blog/2018/12/26/spring-tips-bootiful-alibaba

2019 年 4 月在西溪园区跟 Josh Long 演示 Dubbo Spring Cloud & Spring Cloud Stream RocketMQ Binder:

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 的发展历程回顾:

  • 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

本文作者:方剑,花名洛夜,GitHub ID @fangjian0423,开源爱好者,阿里巴巴高级开发工程师,阿里云产品 EDAS 开发,Spring Cloud Alibaba 开源项目负责人。

阿里云双11领亿元补贴,拼手气抽iPhone 11 Pro、卫衣等好礼,点此参与:http://t.cn/Ai1hLLJT

本文作者:方剑

原文链接

本文为云栖社区原创内容,未经允许不得转载。

Spring Cloud Alibaba 从孵化到 "挂牌" 之旅的更多相关文章

  1. Spring Cloud Alibaba微服务生态的基础实践

    目录 一.背景 二.初识Spring Cloud Alibaba 三.Nacos的基础实践 3.1 安装Nacos并启动服务 3.2 建立微服务并向Nacos注册服务 3.3 建立微服务消费者进行服务 ...

  2. Spring Cloud Alibaba 教程 | 前世今生

    Spring Cloud Alibaba是什么 先来看一下官方是怎么定义Spring Cloud Alibaba的: Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此 ...

  3. 说说我为什么看好Spring Cloud Alibaba

    最近对<Spring Cloud Alibaba基础教程>系列的催更比较多,说一下最近的近况:因为打算Spring Boot 2.x一起更新.所以一直在改博客Spring Boot专题页和 ...

  4. 阿里巴巴开源 Spring Cloud Alibaba,加码微服务生态建设

    本周,Spring Cloud联合创始人Spencer Gibb在Spring官网的博客页面宣布:阿里巴巴开源 Spring Cloud Alibaba,并发布了首个预览版本.随后,Spring Cl ...

  5. Spring Cloud与Dubbo的完美融合之手「Spring Cloud Alibaba」

    很早以前,在刚开始搞Spring Cloud基础教程的时候,写过这样一篇文章:<微服务架构的基础框架选择:Spring Cloud还是Dubbo?>,可能不少读者也都看过.之后也就一直有关 ...

  6. spring cloud alibaba 简介

    ### Spring Cloud Alibaba [官方github地址](https://github.com/alibaba/spring-cloud-alibaba) Spring Cloud ...

  7. Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了

    阿里妹导读:一年多前,Java 界最近发生了一件大事,阿里开源 Spring Cloud Alibaba,并推出首个预览版.Spring Cloud 本身是一套微服务规范,并不是一个拿来即可用的框架, ...

  8. 详细剖析Spring Cloud 和Spring Cloud Alibaba的前世今生

    我们知道spring cloud可以用来开发微服务,但是应该很少有人真正知道Spring Cloud是什么. 官方的解释是:spring cloud提供了一些可以让开发者快速构建分布式应用的工具,这些 ...

  9. Spring Cloud Alibaba基础教程:Nacos的集群部署

    继续说说生产环境的Nacos搭建,通过上一篇<Spring Cloud Alibaba基础教程:Nacos的数据持久化>的介绍,我们已经知道Nacos对配置信息的存储原理,在集群搭建的时候 ...

随机推荐

  1. SEM推广引流效果的因素有哪些呢?

    决定搜索引擎推广效果的基本就是流量,所引流过来的是有效流量还是无效流量,直接决定了推广的效果!那我们如何才能引流到最精准的流量把流量变现呢? 第一个就是关键词的匹配模式 "民营企业" ...

  2. 【集群】Redis哨兵(Sentinel)模式

    主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. 一.哨兵 ...

  3. QTcpSocket学习

    一.涉及到的函数 监听:tcpServer->listen(QHostAddress::LocalHost, 6666) 错误信息:tcpServer->errorString() 新连接 ...

  4. MailUtils

    /** *包名:com.thinkgem.jeesite.test *描述:package com.thinkgem.jeesite.test; */ package com.thinkgem.jee ...

  5. eureka学习(二)

    eureka服务端创建好后,现在我们让eureka客户端(也就是服务提供者)注册到eureka上去. 首先加入依赖包: <!--将微服务provider注册到eureka--> <d ...

  6. 快速搜索插件之quicksearch

    项目中如果遇到快速搜索table表格,select下拉框,ul>li列表等内容的时候,可以使用quicksearch快速搜索插件,举个栗子: 首先要引用jquery.js + jquery.qu ...

  7. 92、R语言分析案例

    1.读取数据 > bank=read.table("bank-full.csv",header=TRUE,sep=";") > 2.查看数据结构 & ...

  8. python字符串比较大小

    zfill函数 xs = ['] print (sorted(xs))

  9. Ettercap详细参数

    关于界面:ettercap提供 4 种运行界面: Text            #文本模式,参数 -T ,一般配合 -q(安静模式)使用 Curses/GTK         #图形模式,参数 -C ...

  10. ES6数组中删除指定元素

    知识点: ES6从数组中删除指定元素 findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引.否则返回-1. arr.splice(arr.findIndex(item => ...