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

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 背景 2014 年,Spring Boot 1.0 发布。Spring Boot 的发布绝对是 Pivotal 历史上具有里程碑意义的事件,它让我们能够非常简便地开发 Spring 应用,屏蔽了各种配置文件和底层实现,提供 AutoConfiguration,Factory Loading Mechanism, Embedded Servlet Container,Conditional Annotation 等诸多特性。

背景

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

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

lADPDgQ9rHr3Gk7NAUTNBP4_1278_324_jpg_620x10000q90g

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 后,再进行验证。

lALPDgQ9rHr3GlDNAhHNBQA_1280_529_png_620x10000q90g

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 吐槽了这块兼容性问题。

lADPDgQ9rHr3GlTNA8DNBQA_1280_960_jpg_620x10000q90g
lADPDgQ9rHr3GlbNA73NBQA_1280_957_jpg_620x10000q90g

参加 Spring One Tour 的当天晚上在酒店跟 Josh Long 介绍 Spring Cloud Alibaba,之后 Josh Long 制作 Bootiful Alibaba 视频:
https://spring.io/blog/2018/12/26/spring-tips-bootiful-alibaba

lADPDgQ9rHr3GlvNA8DNBQA_1280_960_jpg_620x10000q90g

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

lADPDgQ9rHr3GlzNA73NBQA_1280_957_jpg_620x10000q90g

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
lALPDgQ9rHr3Gl7NA4PNBQA_1280_899_png_620x10000q90g

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 Boot

感谢所有的 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 开源项目负责人。

相关实践学习
5分钟轻松打造应对流量洪峰的稳定商城交易系统
本实验通过SAE极速部署一个微服务电商商城,同时结合RocketMQ异步解耦、削峰填谷的能力,带大家体验面对流量洪峰仍旧稳定可靠的商城交易系统!
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
人工智能 Java API
MCP协议重大升级,Spring AI Alibaba联合Higress发布业界首个Streamable HTTP实现方案
本文由Spring AI Alibaba Contributor刘军、张宇撰写,探讨MCP官方引入的全新Streamable HTTP传输层对原有HTTP+SSE机制的重大改进。文章解析Streamable HTTP的设计思想与技术细节,并介绍Spring AI Alibaba开源框架提供的Java实现,包含无状态服务器模式、流式进度反馈模式等多种场景的应用示例。同时,文章还展示了Spring AI Alibaba + Higress的完整可运行示例,分析当前实现限制及未来优化方向,为开发者提供参考。
|
3月前
|
存储 人工智能 自然语言处理
RAG 调优指南:Spring AI Alibaba 模块化 RAG 原理与使用
通过遵循以上最佳实践,可以构建一个高效、可靠的 RAG 系统,为用户提供准确和专业的回答。这些实践涵盖了从文档处理到系统配置的各个方面,能够帮助开发者构建更好的 RAG 应用。
1491 115
|
2月前
|
人工智能 负载均衡 Java
Spring AI Alibaba 发布企业级 MCP 分布式部署方案
本文介绍了Spring AI Alibaba MCP的开发与应用,旨在解决企业级AI Agent在分布式环境下的部署和动态更新问题。通过集成Nacos,Spring AI Alibaba实现了流量负载均衡及节点变更动态感知等功能。开发者可方便地将企业内部业务系统发布为MCP服务或开发自己的AI Agent。文章详细描述了如何通过代理应用接入存量业务系统,以及全新MCP服务的开发流程,并提供了完整的配置示例和源码链接。未来,Spring AI Alibaba计划结合Nacos3的mcp-registry与mcp-router能力,进一步优化Agent开发体验。
1018 14
|
3月前
|
人工智能 Java 决策智能
Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现
此次官方发布的 Spring AI Alibaba OpenManus 实现,包含完整的多智能体任务规划、思考与执行流程,可以让开发者体验 Java 版本的多智能体效果。它能够根据用户的问题进行分析,操作浏览器,执行代码等来完成复杂任务等。
1141 57
|
5月前
|
存储 人工智能 开发框架
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
第二届开放原子大赛 Spring AI Alibaba 应用框架挑战赛决赛于 2 月 23 日在北京圆满落幕。
256 65