注意:这是来自我们的阿里巴巴朋友的客座博文。
大家好!今天,我们非常激动地宣布 Spring Cloud Alibaba 的 0.9.0、0.2.2 和 0.1.2 版本现已发布。
版本亮点
本次通用版本中包含 3 个新版本
- 版本 0.9.0:兼容 Spring Cloud Greenwich
- 版本 0.2.2:兼容 Spring Cloud Finchley
- 版本 0.1.2:兼容 Spring Cloud Edgware
所有这三个版本中添加了四个新模块
- spring-cloud-alibaba-sentinel-zuul
- spring-cloud-alibaba-seata
- spring-cloud-alibaba-dubbo (在 0.1.2 版本中不可用)
- spring-cloud-alibaba-sms
此外,我们在 spring-cloud-alibaba-nacos 和 spring-cloud-alibaba-sentinel 中引入了新功能,并且 rocketmq-binder 现在已与 rocketmq-spring 集成。
最后,我们修复了先前版本中发现的一些错误。
注意:Spring Cloud Alibaba 项目是由阿里巴巴维护的社区项目。
Spring Cloud Alibaba Seata
Seata 是由阿里巴巴集团和蚂蚁金服联合开源的分布式事务组件。Seata 能够与大多数支持 ACID 事务的现有关系型数据库集成,以高效且无侵入的方式解决微服务场景中的分布式事务问题。
在 Spring Cloud 层面,Seata 通过在微服务中传递事务上下文来访问 Spring Cloud 层
- 支持在 Spring MVC 环境中自动恢复 Seata 事务上下文
- 支持在服务调用者通过 RestTemplate 或 FeignClient 调用服务时自动传递 Seata 事务上下文
- 支持在限流和服务降级场景中将 FeingClient 与 Hystrix 或 Sentinel 一起使用
Spring Cloud Alibaba Dubbo
Apache Dubbo™ (孵化中) 是一个高性能、基于 Java 的开源 RPC 框架。
Spring Cloud Alibaba 与其集成
- 基于 Dubbo Spring Boot 2.7.1 (最低 JDK 要求:Java 8)
- 支持所有 Spring Cloud 注册中心实现用于 Dubbo 服务注册(包括 Alibaba Nacos)并引入了一种新的 Dubbo 注册中心协议:“spring-cloud://localhost”
- 扩展了 Spring Cloud 服务间调用的通信协议,这意味着 REST 不再是唯一的方式,并且可以选择 Dubbo 支持的更多通信协议,从而提供更好的性能——例如 dubbo、thrift 等。开发者有三种编程模型可供选择
- 标准 Apache Dubbo:在 Java 接口上标注 `@Reference` `@Service`
- Spring Cloud Open Feign:在 `@FeignClient` Java 接口上标注 `@DubboTransported`
- Spring Cloud RestTemplate:在标注 `@LoadBalanced` 的 RestTemplate 的 `@Bean` 定义上标注 `@DubboTransported`
- 通过使用 Dubbo 内置的负载均衡器替代 Netflix Ribbon,该负载均衡器提供了一种权重机制,使服务更加平滑稳定。
Spring Cloud Alibaba Nacos
Nacos 是一个动态服务发现、配置管理和服务管理平台,它使构建云原生应用更加容易。
Spring Cloud Alibaba Nacos 配置
我们对 Nacos Config 进行了如下更新
- 将 Nacos Client 版本升级至 1.0.0
- 支持 `spring.cloud.nacos.config.enabled` 配置来关闭 Nacos Config 自动注入
- 将 `spring.cloud.nacos.config.enabled` 替换为 `spring.profiles.active`
Spring Cloud Alibaba Nacos 服务发现
我们对 Nacos 服务注册进行了如下更新
- 将 Nacos Client 版本升级至 1.0.0。
- 支持命名空间来隔离数据。
- 提供 `NacosWatch` 来触发 `HeartbeatEvent`。
- 使 `@EnableDiscoveryClient` 在注册服务时变为可选。
Spring Cloud Alibaba Sentinel
Sentinel 是由阿里巴巴中间件团队开发的开源项目,用于解决分布式架构中的流量控制问题并确保高可用性。Sentinel 将“流”作为突破点,通过流量控制、熔断和系统负载保护来帮助您确保服务的可靠性。
此版本中的更新包括
- 将 Sentinel 版本升级至 1.5.2
- 为 Sentinel 的 dataSource 添加 `ruleType` 属性,以修复 dataSource 首次加载空数据时规则数据无法动态加载的错误
- 修复 `@SentinelRestTemplate` 在某些场景下不起作用的错误
- 在 `SentinelProperties` 中添加 JSR 303 验证,并添加两个配置项:Client IP 和 `CommonFilter` 是否已初始化
- 支持 `RequestOriginParser` 的自动注入
- 与 `@SentinelRestTemplate` 对应的 `SentinelProtectInterceptor` 的优先级变为最高
- `SentinelEndpoint` 现在显示更多信息,例如应用名称、日志目录、日志名称策略、仪表盘地址、指标文件大小、客户端 IP 等
- 支持 `@EnableCircuitBreaker`
- 优化 `RestTemplate` 和 `Feign` 中的流量控制和熔断处理逻辑
Spring Cloud Alibaba RocketMQ Binder
RocketMQ 是一个基于高可用集群技术的开源分布式消息系统。它提供低延迟和高可用的消息发布和订阅服务。
此版本中的更新包括
- 与 RocketMQ Spring 集成并重构
- 仅通过配置阿里云 AK/SK 支持连接 Aliware MQ
- 优化消息发送和消费错误情况下的处理逻辑
- 支持异步发送消息,并且默认情况下异步发送消息
Spring Cloud Alibaba Sentinel Zuul
Zuul 是 Netflix 的网络网关产品。我们现在已将其集成到 Sentinel 中。
此版本中的更新包括
- Sentinel 现已与 Zuul 集成,并提供 `SentinelPreFilter`、`SentinelPostFilter`、`SentinelErrorFilter` 用于请求拦截
- 提供配置前缀 `spring.cloud.sentinel.zuul.` 来配置 Sentinel Filter
Spring Cloud Alibaba 云短信
短信是由阿里云提供的消息服务。
Spring Cloud Alibaba 云短信提供以下功能
- 支持单条和批量短信发送
- 支持基于手机号码、日期和消息类型的短信查询
- 通过订阅下行消息支持查询短信发送状态
- 通过订阅上行消息支持检索终端用户回复的内容
Spring Cloud Alibaba 云 SchedulerX
SchedulerX 是由阿里云提供的作业调度中间件工具。
在此版本中,我们修复了循环引用错误。
如何使用
这些构件可从 Maven Central 和 Spring Release 仓库获取,使用 BOM 如下所示
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.9.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
后续计划
Sentinel 目前支持响应式,并将适配 WebFlux 和 Spring Cloud Gateway。
RocketMQ Binder 适配 MessageSource 用于消息拉取。