Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、短期微服务和合约测试)。分布式系统的协调导致样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑、裸机数据中心和托管平台,例如 Cloud Foundry。
特征
Spring Cloud 专注于为典型用例提供良好的开箱即用体验和涵盖其他用例的可扩展性机制。
分布式/版本化配置
服务注册和发现
路由
服务到服务调用
负载平衡
断路 器
分布式消息传递
短期微服务(任务)
消费者驱动和生产者驱动的合同测试
讲座和视频
开始
生成一个新的 Spring Cloud 项目
最简单的入门方法是访问 start.spring.io ,选择您的 Spring Boot 版本和您要使用的 Spring Cloud 项目。这会在生成项目时将相应的 Spring Cloud BOM 版本添加到您的 Maven/Gradle 文件中。
将 Spring Cloud 添加到现有的 Spring Boot 应用程序
如果您是一个现有的 Spring Boot 应用程序,您想将 Spring Cloud 添加到该应用程序,第一步是确定您应该使用的 Spring Cloud 版本。您在应用程序中使用的版本将取决于您使用的 Spring Boot 版本。
下表概述了哪个版本的 Spring Cloud 映射到哪个版本的 Spring Boot。
表 1.发布 train Spring Boot 兼容性(有关更多详细信息,请参阅此处 )。
Spring Cloud Dalston、Edgware、Finchley、Greenwich、2020.0(又名 Ilford)、2021.0(又名 Jubilee)和 2022.0(又名 Kilburn)都已达到生命周期结束状态,不再受支持。
错误修复和向后兼容功能通过服务发布 (SR) 添加到每个发布系列中。确定要使用的 Spring Cloud 版本后,应为该版本系列使用最新的服务版本。您可以在我们的发行说明页面 上找到最新的服务版本信息。
现在您知道要使用的发布系列以及该发布系列的最新服务版本,您可以将 Spring Cloud BOM 添加到您的应用程序中。
<properties>
<spring-cloud.version>2025.0.0</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.7'
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2025.0.0")
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
建议您使用发布训练 BOM 这是一个仅 BOM 的版本,它仅包含依赖项管理,没有插件声明或对 Spring 或 Spring Boot 的直接引用。您可以 Spring Boot 父 POM,或使用 Spring Boot () 中的 BOM 来管理 Spring Boot 版本。 spring-cloud-dependencies
spring-boot-dependencies
就像 Spring Boot 一样,许多 Spring Cloud 项目都包含启动器,您可以将其添加为依赖项,以将各种云原生功能添加到您的项目中。在许多情况下,许多功能纯粹是通过将启动器添加到类路径来启用的。起始名称记录在各个项目中。下面是如何将 Spring Cloud Config 客户端和 Spring Cloud Netflix Eureka 客户端添加到应用程序的示例。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
...
</dependencies>
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-config'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
//...
}
主要项目
由 git 存储库支持的集中式外部配置管理。配置资源直接映射到 Spring,但如果需要,非 Spring 应用程序可以使用。 Environment
Spring Cloud Gateway 是一款基于 Spring Framework 和 Spring Boot 的智能可编程路由器。
与 Netflix OSS 的 Eureka Services Discovery 集成。
使用 Hashicorp Consul 进行服务发现和配置管理。
Kubernetes 与 Spring Cloud Discovery 客户端、配置集成,包括用于发现和配置的控制器。
Spring Cloud Function 通过函数促进业务逻辑的实现。它支持跨无服务器提供商的统一编程模型,以及独立运行(本地或 PaaS 中)的能力。
轻量级事件驱动微服务框架,可快速构建可连接到外部系统的应用程序。简单的声明式模型,用于在 Spring Boot 应用程序之间使用 Apache Kafka 或 RabbitMQ 发送和接收消息。
Spring Cloud Stream 应用程序是开箱即用的 Spring Boot 应用程序,使用 Spring Cloud Stream 中的 binder 抽象提供与外部中间件系统(如 Apache Kafka、RabbitMQ 等)的集成。
一个短期的微服务框架,用于快速构建执行有限数据处理量的应用程序。用于向 Spring Boot 应用程序添加功能性和非功能性特性的简单声明性。
Spring Cloud Task App Starters 是 Spring Boot 应用程序,可以是任何进程,包括不会永远运行的 Spring Batch 作业,它们会在有限的数据处理后结束/停止。
使用 Apache Zookeeper 进行服务发现和配置管理。
Spring Cloud Contract 是一个伞式项目,拥有帮助用户成功实施消费者驱动合同方法的解决方案。
Spring Cloud OpenFeign 通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯法,为 Spring Boot 应用程序提供集成。
用于将服务和服务实例与分布式消息传递链接在一起的事件总线。对于在集群中传播状态更改(例如配置更改事件)很有用。
为构建实现 Open Service Broker API 的 Service Broker 提供起点。
发布列车
Spring Cloud 是一个总括项目,由原则上具有不同发布节奏的独立项目组成。为了管理项目组合,将发布 BOM(物料清单),其中包含一组针对单个项目的精选依赖关系。转到此处 阅读有关发布序列命名约定的信息。