先行一步
VMware 提供培训和认证,加速你的发展。
了解更多Spring Cloud 提供工具,供开发者快速构建分布式系统中常见的一些模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、短命微服务和契约测试)。分布式系统的协调会产生样板模式,而使用 Spring Cloud,开发者可以快速搭建实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发者的笔记本电脑、裸金属数据中心以及 Cloud Foundry 等托管平台。
Spring Cloud 专注于为典型用例提供良好的开箱即用体验,并提供扩展机制以覆盖其他情况。
分布式/版本化配置
服务注册与发现
路由
服务间调用
负载均衡
断路器
分布式消息
短命微服务(任务)
消费者驱动和生产者驱动的契约测试
最简单的入门方式是访问 start.spring.io,选择你的 Spring Boot 版本和你想要使用的 Spring Cloud 项目。当你生成项目时,这会将相应的 Spring Cloud BOM 版本添加到你的 Maven/Gradle 文件中。
如果你想将 Spring Cloud 添加到现有的 Spring Boot 应用中,第一步是确定应该使用哪个版本的 Spring Cloud。你在应用中使用的版本取决于你正在使用的 Spring Boot 版本。
下表概述了 Spring Cloud 的哪个版本对应 Spring Boot 的哪个版本。
表 1. 发布火车与 Spring Boot 兼容性(有关更详细的信息,请参阅 此处)。
发布火车 | Spring Boot 版本 |
---|---|
2025.0.x 又称 Northfields | 3.5.x |
2024.0.x 又称 Moorgate | 3.4.x |
2023.0.x 又称 Leyton | 3.3.x, 3.2.x |
2022.0.x 又称 Kilburn | 3.0.x, 3.1.x (从 2022.0.3 开始) |
2021.0.x 又称 Jubilee | 2.6.x, 2.7.x (从 2021.0.3 开始) |
2020.0.x 又称 Ilford | 2.4.x, 2.5.x (从 2020.0.3 开始) |
Hoxton | 2.2.x, 2.3.x (从 SR5 开始) |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
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>2024.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.4.0'
id 'io.spring.dependency-management' version '1.1.6'
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2024.0.0")
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
建议你使用发布火车 BOM
spring-cloud-dependencies
。这是一个仅包含 BOM 的版本,它只包含依赖管理,不包含插件声明或直接引用 Spring 或 Spring Boot。你可以使用 Spring Boot 父 POM,或使用 Spring Boot 的 BOM (spring-boot-dependencies
) 来管理 Spring Boot 版本。
就像 Spring Boot 一样,许多 Spring Cloud 项目包含启动器,你可以将它们作为依赖添加到你的项目中,以添加各种云原生功能。在许多情况下,只需将启动器添加到类路径即可启用许多功能。启动器的名称在各个项目中都有文档说明。下面是一个示例,说明如何将 Spring Cloud Config Client 和 Spring Cloud Netflix Eureka client 添加到你的应用程序中。
<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 的 Environment
,但如果需要,非 Spring 应用也可以使用。
Spring Cloud Gateway 是一个基于 Spring Framework 和 Spring Boot 的智能可编程路由器。
与 Netflix OSS 的 Eureka 服务发现集成。
使用 Hashicorp Consul 进行服务发现和配置管理。
一个用于在现代运行时上编排可组合微服务应用程序的云原生服务。易于使用的 DSL、拖放 GUI 和 REST-APIs 共同简化了基于微服务的数据管道的整体编排。
Spring Cloud Function 提倡通过函数实现业务逻辑。它支持跨无服务器提供商的统一编程模型,以及独立运行(本地或 PaaS)的能力。
一个轻量级的事件驱动微服务框架,用于快速构建可以连接到外部系统的应用程序。使用简单的声明性模型通过 Apache Kafka 或 RabbitMQ 在 Spring Boot 应用程序之间发送和接收消息。
Spring Cloud Stream Applications 是开箱即用的 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 Environment 及其他 Spring 编程模型惯用法,为 Spring Boot 应用程序提供集成。
一个事件总线,用于通过分布式消息连接服务和服务实例。对于跨集群传播状态变化(例如配置变更事件)非常有用。
为构建实现 Open Service Broker API 的服务代理提供起点。
Spring Cloud 是一个伞形项目,包含独立的项目,这些项目原则上具有不同的发布周期。为了管理这个组合,会发布一个 BOM (Bill of Materials),其中包含了对各个项目精心策划的依赖关系。转到此处阅读关于发布火车命名规范的信息。