4 月 19 日, Spring Cloud Alibaba 发布了首个 GA 版本,此次开发历时 267 天,汇集 26 位 contributor 的努力,覆盖 Spring Cloud Edgware、Spring Cloud Finchley 和 Spring Cloud Greenwich 3 个版本。Spring Cloud 联合创始人 Spencer Gibb 在 Spring 官网的博客页面宣布该发板消息。随后,Spring Cloud 官方 Twitter 也发布了此消息。 版本概要概要:
新版本的版本号对应关系如下表:
发布三个版本意味着维护三个分支,这个过程需要付出很多精力来做修改,遇到的难点有以下这些:
模块详情1. Spring Cloud Alibaba Seata(原 Fescar)另外一个新增的组件是 Seata (原 Fescar,即分布式事务解决方案)。 Seata 是 阿里巴巴 开源的分布式事务中间件,以高效并且对业务 0 侵入的方式,解决微服务场景下面临的分布式事务问题。 随着业务需求和架构的变化,单体应用被拆分为微服务,原有的单库数据源已经改成了分别使用独立的数据源。业务过程将由多个个服务的调用来完成。此时,每一个服务内部的数据一致性仍可以通过本地事务来保证,但整个业务层面的全局数据一致性的保障改如何保障呢?这就是 Seata 所解决的微服务架构下典型的分布式事务需求。 Seata 提供了 AT(Automatic Transaction)和 TCC (Try-Confirm-Cancel) 两种工作模式。AT 模式是对业务完全无侵入,支持目前绝大多数 支持 ACID 事务的 关系型数据库。 当事务的参与者只有 支持 ACID 事务的关系型数据库时,Seata 可以在完全不侵入 业务的情况下完成分布式事务方案。 当事务的参与者中包含其他场景时,Seata 提供了与 AT 相应的另外一种工作模式称为 TCC 模式 ,来解决这些场景下的分布式事务问题。TCC 模式下,分支事务需要应用自己来定义业务本身及提交和回滚的逻辑。 Seata 事务的传播是依赖于在微服务调用链中传递 Seata 事务 上下文来完成的。如何在 Spring Cloud 框架中传播 Seata 事务上下文,并使得 Spring Cloud 用户更方便使用 Seata,就是 Spring Cloud Alibaba Seata 解决的问题。 在 Spring Cloud 这一层面,我们通过在微服务中传递事务上下文的方式完成了 Seata 在 Spring Cloud 层面的接入:
2. Spring Cloud Stream RocketMQ Binder在之前的 RocketMQ Binder 实现中,Binder 内部使用原生的 RocketMQ Producer 和 Consumer 进行消息的处理。 新版本对 RocketMQ Binder 进行了重构,集成了 RocketMQ Spring,其中 RocketMQ Spring 提供了这些功能:
RocketMQ Binder 集成 RocketMQ Spring 之后,会将 RocketMQ Binder 内部原先使用原生的 RocketMQ Producer 和 Consumer 替换成 RocketMQ Spring 内部提供的类或接口。 同时项目引入了 Binder 也可以使用 RocketMQ Spring 的特性:
3. Spring Cloud Bus RocketMQSpring Cloud 体系消息总线的新选择 - 基于 RocketMQ 的消息总线组件,可以用于构建自身的微服务消息体系,底座基于 Spring Cloud Stream RocketMQ Binder 实现。 新版本中所有的消费者默认会使用 广播 和 4. Spring Cloud Alibaba NacosNacos Client 依赖使用了最新的 1.0.0 版本。Nacos 1.0.0 GA 版本,可大规模投入到生产环境,我们建议升级到 1.0.0 版本。 Spring Cloud Alibaba Nacos Config在配置这一块,上一个版本发布以后已经覆盖了绝大多数的场景,如果涉及到没有覆盖的场景,欢迎大家来创建 Issue 进行讨论或直接创建 Pull Request 来完善。 我们再重温一下目前 Nacos Config 提供的功能:
Spring Cloud Alibaba Nacos Discovery在注册这一块,我们支持了 同时还有一些其它额外的改进:
5. Spring Cloud Alibaba Sentinel组件集成上个版本发布之后,Sentinel 组件就已经对 Spring 体系中的客户端组件提供了比较好的支持了。
新版本 Sentinel 组件对 Zuul 1.x 网关进行了集成,使用方式也非常地简单,只需要针对 url 进行资源的设置即可:比如使用 Zuul 后访问 关于 Spring Cloud Gateway 网关的支持,会在 Sentinel 1.6 版本支持。 功能优化
Bug 解决
6.Spring Cloud Alibaba DubboDubbo 作为成熟的 RPC 框架,其易用性、扩展性和健壮性已得到业界的认可。Dubbo 与 Spring Cloud 并非竞争关系,Dubbo Spring Cloud 的出现使得 Dubbo 生态体系发生了巨大变化,它作为 Spring Cloud Alibaba 的最核心组件,完全地拥抱 Spring Cloud 技术栈,不仅保持 Spring Cloud 原生特性,而且提供更为完善的 Dubbo 服务治理能力。简言之,Dubbo Spring Cloud 对 Spring Cloud 技术栈所带来的革命性变化。 通过以下表格,简要地对比 Spring Cloud 与 Dubbo Spring Cloud 的功能特性: 更多的特性细节,请参考下文的“功能特性” 部分。 版本支持由于 Spring 官方宣布 Spring Cloud Edgware(下文简称为 “E” 版) 将在 2019 年 8 月 1 号后停止维护,因此,目前 Dubbo Spring Cloud 发布版本并未对 “E” 版提供支持,仅为 Finchley 与 Greenwich (下文分别简称为 “F” 版 和 “G” 版) 开发,同时也建议和鼓励 Spring Cloud 用户更新至 “F” 版 或 “G” 版。 同时,Dubbo Spring Cloud 基于 Apache Dubbo Spring Boot 2.7.1 开发(最低 Java 版本为 1.8),提供完整的 Dubbo 注解驱动、外部化配置以及 Production-Ready 的特性。(详情请参考:https://github.com/apache/incubator-dubbo-spring-boot-project) 以下表格将说明 Dubbo Spring Cloud 版本关系映射关系: 功能特性
Dubbo Spring Cloud 基于 Spring Cloud Commons 抽象实现 Dubbo 服务注册与发现,应用只需增添外部化配置属性 “
默认情况,Spring Cloud Open Feign 以及
Dubbo Spring Cloud 引入了全新的服务治理特性 - 服务自省(Service Introspection),其设计目的在于最大化减轻注册中心负载,去 Dubbo 注册元信息中心化。假设一个 Spring Cloud 应用引入 Dubbo Spring Boot Starter,并暴露 N 个 Dubbo 服务,以 Dubbo Nacos 注册中心为例,当前应用将注册 N+1 个 Nacos 应用,除 Spring Cloud 应用本身之前,其余 N 个应用均来自于 Dubbo 服务,当 N 越大时,注册中心负载越重。因此,Dubbo Spring Cloud 应用对注册中心的负载相当于传统 Dubbo 的 N 分之一,在不增加基础设施投入的前提下,理论上,使其集群规模扩大 N 倍。当然,未来的 Dubbo 也将提供服务自省的能力。
尽管 Dubbo Spring Cloud 完全地保留了原生 Spring Cloud 服务调用特性,不过 Dubbo 服务治理的能力是
Spring Cloud Open Feign 所不及的,如高性能、高可用以及负载均衡稳定性等方面。因此,建议开发人员将 Spring
Cloud Open Feign 或者 进阶阅读了解更多 Dubbo Spring Cloud 的特性以及设计细节,可访问: Spring Cloud Alibaba wiki: Dubbo 的博客: http://dubbo.apache.org/zh-cn/blog/index.html 完整示例如果您需要进一步了解 Dubbo Spring Cloud 使用细节,可参考: 官方 Samples: https://github.com/spring-cloud-incubator/spring-cloud-alibaba/tree/master/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples 其子模块说明如下:
问题反馈如果您在使用的过程中遇到任何问题,请内容反馈至 https://github.com/spring-cloud-incubator/spring-cloud-alibaba/issues 7. Spring Cloud Alibaba Cloud SMS短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力。 我们规范了短信服务对应的一些方法在 可以在配置文件中配置对应的 ak、sk、上行,下行队列名。程序对应的类中就可以注入 What's NextSentinel 目前已经支持 reactive,并且会在 Sentinel 发布 1.6 版本支持 Spring Cloud Gateway 之后,进行 WebFlux 和 Spring Cloud Gateway 的适配。同时 RocketMQ Binder 将会适配 MessageSource 进行消息的拉取。 致谢Spring Cloud Alibaba 从开源到发布第一个正式版本,受到了很多社区同学的关注。社区的每一个 Issue ,每一个 PR,都是对整个项目的帮助,都在为建设更好用的 Spring Cloud 添砖加瓦。我们希望有更多社区的同学加入进来,一起把项目做好。 我们真心地感谢为这个项目提出过 Issue 和 PR 的同学,以及这些 contributor: @HaojunRen, @xiejiashuai, @mengxiangrui007, @yunzheng1228, @tigerMoon, @slievrly, @mostcool, @pig4cloud, @carlWangTao, @yanglbme, @codewaltz1994, @caojiele, @JakeConnors376W, @Harris2012, @justlive1, @毛建伟(wb-maojianwei) , @bluesword12350 最后还要特别感谢 Spring Cloud Alibaba 生态中的其他开源项目: Dubbo https://github.com/apache/incubator-dubbo Seata https://github.com/seata/seata Sentinel https://github.com/alibaba/sentinel Nacos https://github.com/alibaba/nacos RocketMQ https://github.com/apache/rocketmq |