领先一步
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 版本 |
---|---|
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>2023.0.2</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.3.0'
id 'io.spring.dependency-management' version '1.1.4'
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2023.0.2")
}
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 项目都包含启动器(starter),您可以将它们作为依赖项添加到项目中,从而为项目添加各种云原生功能。在许多情况下,只需将启动器添加到类路径中即可启用许多功能。启动器的名称在各个项目中都有记录。下面是一个示例,说明如何将 Spring Cloud Config Client 和 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 Environment
,但如果需要,也可以被非 Spring 应用程序使用。
Spring Cloud Gateway 是一个基于 Spring Framework 和 Spring Boot 的智能且可编程的路由器。
与 Netflix OSS 的 Eureka 服务发现集成。
使用 Hashicorp Consul 进行服务发现和配置管理。
一个云原生编排服务,用于在现代运行时上编排可组合的微服务应用程序。易于使用的 DSL、拖放式 GUI 和 REST API 简化了基于微服务的数 据管道的整体编排。
Spring Cloud Function 推广通过函数实现业务逻辑。它支持跨无服务器提供商的统一编程模型,以及独立运行(本地或在 PaaS 中)的能力。
一个轻量级的事件驱动微服务框架,用于快速构建可以连接到外部系统的应用程序。使用 Apache Kafka 或 RabbitMQ 在 Spring Boot 应用程序之间发送和接收消息的简单声明式模型。
Spring Cloud Stream Applications 是开箱即用的 Spring Boot 应用程序,使用 Spring Cloud Stream 中的绑定器抽象,提供与 Apache Kafka、RabbitMQ 等外部中间件系统的集成。
一个短寿命的微服务框架,用于快速构建执行有限数据处理量的应用程序。简单声明式地为 Spring Boot 应用程序添加功能性和非功能性特性。
Spring Cloud Task App Starters 是 Spring Boot 应用程序,可以是任何进程,包括 Spring Batch 作业,这些作业不会永久运行,并且在有限的数据处理时间后结束/停止。
使用 Apache Zookeeper 进行服务发现和配置管理。
Spring Cloud Contract 是一个伞形项目,包含帮助用户成功实施消费者驱动契约 (Consumer Driven Contracts) 方法的解决方案。
Spring Cloud OpenFeign 通过自动配置和绑定到 Spring Environment 和其他 Spring 编程模型习惯用法,为 Spring Boot 应用程序提供集成。
一个事件总线,用于通过分布式消息传递将服务和服务实例连接在一起。可用于在集群中传播状态更改(例如配置更改事件)。
提供构建实现开放服务代理 API 的服务代理的起点。
Spring Cloud 是一个包含独立项目的伞形项目,原则上具有不同的发布节奏。为了管理项目组合,将发布包含对各个项目依赖项的精选集的 BOM(物料清单)。请点击此处阅读有关发行列车命名约定的信息。
使用以下方法引导您的应用程序 Spring Initializr.