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.Release train 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 开始)
霍克斯顿
2.2.x、2.3.x(从 SR5 开始)
格林威治
2.1.x 版本
芬奇利
2.0.x 版本
埃奇韦尔
1.5.x 版本
道尔斯顿
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 这是一个仅限 BOM 的版本,它仅包含依赖项管理,不包含插件声明或对 Spring 或 Spring Boot 的直接引用。你可以 Spring Boot 父 POM,或使用 Spring Boot () 中的 BOM 来管理 Spring Boot 版本。 spring-cloud-dependencies
spring-boot-dependencies
就像 Spring Boot 一样,许多 Spring Cloud 项目都包含启动器,您可以将其添加为依赖项,以将各种云原生功能添加到您的项目中。在许多情况下,许多功能是纯粹通过将 starter 添加到 Classpath 来启用的。起始名称记录在各个项目中。下面是如何将 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 的智能可编程路由器。
与 Eureka Services 集成,从 Netflix OSS 发现。
使用 Hashicorp Consul 进行服务发现和配置管理。
一种云原生编排服务,适用于现代运行时上的可组合微服务应用程序。易于使用的 DSL、拖放式 GUI 和 REST-API 共同简化了基于微服务的数据管道的整体编排。
Spring Cloud Function 通过 Functions 促进业务逻辑的实现。它支持跨无服务器提供商的统一编程模型,以及独立运行(本地或在 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 Environment 和其他 Spring 编程模型习语,为 Spring Boot 应用程序提供集成。
一个事件总线,用于将服务和服务实例与分布式消息传递链接在一起。用于在集群中传播状态更改(例如配置更改事件)。
为构建实现 Open Service Broker API 的服务代理提供起点。
发布列车
Spring Cloud 是一个伞形项目,由独立项目组成,原则上具有不同的发布节奏。为了管理投资组合,将发布一个 BOM(物料清单),其中包含对单个项目的一组精选依赖项。请转到此处 阅读有关 Release Train 命名约定的信息。