ITADN
alibaba/spring-cloud-alibaba
alibaba/spring-cloud-alibaba · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Spring Cloud Alibaba

CircleCI Maven Central License actions Leaderboard

由阿里巴巴维护的项目。

请参阅中文文档以获取中文说明。

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 文件进行快速了解。

示例:

Sentinel 示例

Nacos 示例

RocketMQ 示例

阿里云 OSS 示例

版本控制指南

项目的版本号形式为 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 时遇到任何问题,可以在此提问。