Spring Cloud Alibaba
这是一个由阿里巴巴维护的项目。
中文版文档请参阅中文文档。
Spring Cloud Alibaba为分布式应用开发提供了一站式解决方案。它包含了开发分布式应用所需的所有组件,使您能够轻松地使用Spring Cloud开发应用。
使用Spring Cloud Alibaba,您只需添加一些注解和少量配置,就可以将Spring Cloud应用连接到阿里巴巴的分布式解决方案,并使用阿里巴巴中间件构建分布式应用系统。
特性
- 流量控制与服务降级:默认支持HTTP服务的流量控制。您还可以使用注解自定义流量控制和服务降级规则。这些规则可以动态更改。
- 服务注册与发现:服务可以注册,客户端可以使用Spring管理的Bean发现实例。负载均衡与相应的Spring Cloud支持保持一致。
- 分布式配置:支持分布式系统中的外部化配置,当配置发生变化时自动刷新。
- 事件驱动:支持构建与共享消息系统连接的高度可扩展的事件驱动微服务。
- 分布式事务:支持高性能且易于使用的分布式事务解决方案。
- 阿里云对象存储:海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任何类型的数据。
- 阿里云SchedulerX:精确、高可靠、高可用的定时任务调度服务,响应时间在秒级内。
- 阿里云短信服务:覆盖全球的消息服务,阿里云短信服务提供便捷、高效、智能的通信能力,帮助企业快速联系客户。
更多特性请参阅Roadmap。
除了上述特性外,为满足企业用户的场景需求,Spring Cloud Alibaba的企业版微服务引擎MSE提供了企业级微服务治理中心,包括更强大的治理能力,如灰度发布、服务预热、无损上下线和异常实例摘除。同时,还提供了多种产品和解决方案,如企业级Nacos注册/配置中心、企业级云原生网关等。
组件
Sentinel:Sentinel以"流量"为切入点,提供流量控制、并发、熔断、负载保护等解决方案,保障服务的稳定性。
Nacos:一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用。
RocketMQ:一个具有低延迟、高性能和可靠性、万亿级容量和灵活可扩展性的分布式消息和流式平台。
Seata:一个易于使用的高性能微服务架构分布式事务解决方案。
阿里云OSS:一种加密安全的云存储服务,可在全球任何地方存储、处理和访问海量数据。
阿里云短信服务:覆盖全球的消息服务,阿里云短信服务提供便捷、高效、智能的通信能力,帮助企业快速联系客户。
阿里云SchedulerX:精确、高可靠、高可用的定时任务调度服务,响应时间在秒级内。
更多特性请参阅Roadmap。
如何构建
- 2023.x 分支: 对应 Spring Cloud 2023 和 Spring Boot 3.2.x,支持 JDK 17 或更高版本。
- 2022.x 分支: 对应 Spring Cloud 2022 和 Spring Boot 3.0.x,支持 JDK 17 或更高版本。
- 2021.x 分支: 对应 Spring Cloud 2021 和 Spring Boot 2.6.x,支持 JDK 1.8 或更高版本。
- 2020.0 分支: 对应 Spring Cloud 2020 和 Spring Boot 2.4.x,支持 JDK 1.8 或更高版本。
- 2.2.x 分支: 对应 Spring Cloud Hoxton 和 Spring Boot 2.2.x,支持 JDK 1.8 或更高版本。
- greenwich 分支: 对应 Spring Cloud Greenwich 和 Spring Boot 2.1.x,支持 JDK 1.8 或更高版本。
- finchley 分支: 对应 Spring Cloud Finchley 和 Spring Boot 2.0.x,支持 JDK 1.8 或更高版本。
- 1.x 分支: 对应 Spring Cloud Edgware 和 Spring Boot 1.x,支持 JDK 1.7 或更高版本。
Spring Cloud 使用 Maven 进行大多数构建相关活动,您可以通过克隆感兴趣的项目并输入以下命令快速开始:
./mvnw install
如何使用
添加 Maven 依赖
这些构件可通过 BOM 从 Maven 中央仓库和 Spring 发布仓库获得:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2023.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在 dependencies
中添加模块。如果想选择旧版本,可以参考版本说明。
示例
我们的项目中包含了一个 spring-cloud-alibaba-examples
模块,帮助您快速上手 Spring Cloud Alibaba。它包含一个示例,您可以参考示例项目中的 readme 文件快速了解。
示例:
版本控制指南
项目的版本号形式为 x.x.x,其中 x 是从 0 开始的数字,不限于 0~9 范围。当项目处于孵化阶段时,版本号为 0.x.x。
由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块中的接口和注解发生了重大变化,spring-cloud-commons 从 1.x.x 到 2.0.0 也变化很大,我们采用与 Spring Boot 版本号相同的规则。
- 1.5.x 对应 Spring Boot 1.5.x
- 2.0.x 对应 Spring Boot 2.0.x
- 2.1.x 对应 Spring Boot 2.1.x
- 2.2.x 对应 Spring Boot 2.2.x
- 2020.x 对应 Spring Boot 2.4.x
- 2021.x 对应 Spring Boot 2.6.x
- 2022.x 对应 Spring Boot 3.0.x
- 2023.x 对应 Spring Boot 3.2.x
行为准则
本项目是 Spring Cloud 的子项目,遵循贡献者公约行为准则。参与时,您应遵守此准则。如遇到不可接受的行为,请向 spring-code-of-conduct@pivotal.io 报告。
代码约定和内务管理
这些不是拉取请求的必要条件,但都会有所帮助。它们可以在原始拉取请求之后但合并之前添加。
使用 Spring Framework 代码格式约定。如果使用 Eclipse,可以从 Spring Cloud Build 项目导入 eclipse-code-formatter.xml 文件的格式设置。如果使用 IntelliJ,可以使用 Eclipse Code Formatter 插件导入相同的文件。
确保所有新的 .java 文件都有简单的 Javadoc 类注释,至少包含一个标识您的 @author 标签,最好还有至少一段关于该类用途的说明。
为所有新的 .java 文件添加 ASF 许可头注释(从项目中的现有文件复制)。
如果您对 .java 文件进行了实质性修改(不仅仅是美化修改),请将自己添加为 @author。
添加一些 Javadocs,如果更改了命名空间,还要添加一些 XSD 文档元素。
一些单元测试也会有很大帮助 —— 总得有人来做这件事。
如果没有其他人使用您的分支,请将其重新基于当前的 2023.x(或主项目中的其他目标分支)。
在编写提交消息时,请遵循以下约定,如果您正在修复现有问题,请在提交消息末尾添加 Fixes gh-XXXX(其中 XXXX 是问题编号)。
联系我们
邮件列表是讨论几乎所有与 spring-cloud-alibaba 相关事项的推荐方式。
spring-cloud-alibaba@googlegroups.com:如果您在使用或开发 spring-cloud-alibaba 时遇到任何问题,可以在这里提问。