Spring Cloud Alibaba
由阿里巴巴维护的项目。
请参阅中文文档以获取中文说明。
Spring Cloud Alibaba 为分布式应用开发提供一站式解决方案。它包含开发分布式应用所需的所有组件,使您能够轻松地使用 Spring Cloud 开发应用程序。
使用 Spring Cloud Alibaba,您只需添加一些注解和少量配置,即可将 Spring Cloud 应用连接到阿里巴巴的分布式解决方案,并使用阿里巴巴中间件构建分布式应用系统。
特性
- 流量控制与服务降级:默认支持 HTTP 服务的流量控制。您也可以使用注解自定义流量控制和服务降级规则。规则可以动态更改。
- 服务注册与发现:服务可以注册,客户端可以使用 Spring 管理的 Bean 发现实例。负载均衡与相应 Spring Cloud 支持的保持一致。
- 分布式配置:支持分布式系统中的外部化配置,配置更改时自动刷新。
- 事件驱动:支持构建与共享消息系统连接的高可扩展性事件驱动微服务。
- 分布式事务:支持高性能且易于使用的分布式事务解决方案。
- 阿里云对象存储:海量、安全、低成本、高可靠的云存储服务。支持在任何时间、任何地点存储和访问任何类型的应用数据。
- 阿里云 SchedulerX:响应时间在秒级内的精确、高可靠、高可用定时任务调度服务。
- 阿里云短信:覆盖全球的消息服务,阿里云短信提供便捷、高效、智能的通信能力,帮助企业快速联系客户。
有关更多功能,请参阅 Roadmap。
除上述功能外,针对企业用户场景的需求,Spring Cloud Alibaba 企业版的 Microservices Engine (MSE) 提供了企业级微服务治理中心,包含灰度发布、服务预热、无损上下线及离群点摘除等更强大的治理能力。同时,它还提供了企业级 Nacos 注册/配置中心、企业级云原生网关等多种产品和解决方案。
Components
Sentinel: Sentinel 以“流量”为切入点,提供流量控制、并发控制、熔断降级、系统负载保护等解决方案,以保障服务的稳定性。
Nacos: 一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用。
RocketMQ: 一个低延迟、高性能、高可靠、万亿级容量且具备灵活扩展性的分布式消息和流处理平台。
Seata: 一个面向微服务架构的高性能、易用的分布式事务解决方案。
Alibaba Cloud OSS: 一种加密且安全的云存储服务,可从全球任何位置存储、处理和访问海量数据。
Alibaba Cloud SMS: 一项覆盖全球的消息服务,Alibaba SMS 提供便捷、高效且智能的通信能力,帮助企业快速联系其客户。
Alibaba Cloud SchedulerX: 精确、高可靠、高可用的定时任务调度服务,响应时间在秒级以内。
如需了解更多功能,请参阅 Roadmap.
如何构建
- 2025.1.x 分支:对应 Spring Cloud 2025.1.x & Spring Boot 4.0.x,支持 JDK 17 或更高版本。
- 2025.0.x 分支:对应 Spring Cloud 2025.0.x & Spring Boot 3.5.x,支持 JDK 17 或更高版本。
- 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 Central 和 Spring Release 仓库获取:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2025.1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在 dependencies 中添加该模块。如果您想选择较早的版本,请参阅 Release Notes。
Snapshot
如果您需要使用已发布的 Snapshot Version,请在 dependencyManagement 中添加以下配置。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2025.1.0.1-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在 repositories 中添加以下配置。
如果中国用户难以访问 maven.pkg.github.com 域名,请考虑使用 Alibaba Cloud Effect Artifact Repository 作为 GitHub Packages 的代理。
<repositories>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/alibaba/spring-cloud-alibaba</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
在 settings.xml 中添加以下配置。
<servers>
<server>
<id>github</id>
<username>Your GitHub Username</username>
<password>Your GitHub Token (requires read:packages permission)</password>
</server>
</servers>
添加 Gradle 依赖
发布版本
在您的 build.gradle(或 build.gradle.kts)中通过 platform 使用 Maven Central BOM:
dependencies {
implementation platform("com.alibaba.cloud:spring-cloud-alibaba-dependencies:2025.1.0.0")
// choose starter(s) as needed
implementation "com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config"
}
快照
如果你需要使用已发布的 Snapshot Version,请使用快照 BOM 并添加 GitHub Packages 仓库:
repositories {
mavenCentral()
maven {
url = uri("https://maven.pkg.github.com/alibaba/spring-cloud-alibaba")
credentials {
username = findProperty("gpr.user") ?: System.getenv("GITHUB_USERNAME")
password = findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN")
}
}
}
dependencies {
implementation platform("com.alibaba.cloud:spring-cloud-alibaba-dependencies:2025.1.0.0-SNAPSHOT")
// choose starter(s) as needed
implementation "com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config"
}
您可以将凭据放在 ~/.gradle/gradle.properties 中:
gpr.user=Your GitHub Username
gpr.key=Your GitHub Token (requires read:packages permission)
示例
我们项目中包含一个 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 也有较大改动,因此我们采用与 SpringBoot 版本号相同的版本规则。
- 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
- 2025.0.x 对应 Spring Boot 3.5.x
- 2025.1.x 对应 Spring Boot 4.0.x
行为准则
本项目是 Spring Cloud 的子项目,遵循 Contributor Covenant 行为准则。通过参与,您被期望遵守此准则。请将不可接受的行为报告至 spring-code-of-conduct@pivotal.io。
代码规范与日常维护
这些都不是拉取请求(pull request)所必需的,但它们都会有所帮助。也可以在原始拉取请求之后、合并之前添加。
使用 Spring Framework 的代码格式约定。如果使用 Eclipse,可以从 Spring Cloud Build 项目中导入 eclipse-code-formatter.xml 文件来导入格式化设置。如果使用 IntelliJ,可以使用 Eclipse Code Formatter 插件导入相同的文件。
确保所有新的 .java 文件都有一个简单的 Javadoc 类注释,至少包含一个标识您的 @author 标签,最好还有一段关于该类用途的说明。
在所有新的 .java 文件中添加 ASF 许可证头注释(从项目中的现有文件复制)
在您大幅修改(不仅仅是外观上的更改)的 .java 文件中,将自己添加为 @author。
添加一些 Javadocs,如果更改了命名空间,则添加一些 XSD 文档元素。
一些单元测试也会有很大帮助——总得有人去做。
如果没有其他人正在使用您的分支,请将其变基(rebase)到当前的 2023.x(或主项目中的其他目标分支)。
在编写提交信息时,请遵循以下约定,如果您正在修复一个现有问题,请在提交信息的末尾添加 Fixes gh-XXXX(其中 XXXX 是问题编号)。
联系我们
建议通过邮件列表讨论几乎所有与 spring-cloud-alibaba 相关的内容。
spring-cloud-alibaba@googlegroups.com: 如果您在使用或开发 spring-cloud-alibaba 时遇到任何问题,可以在此提问。