close

Spring 云

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.发布火车Spring Boot兼容性
发布火车 开机版本

2020.0.x名伊尔福德

2.4.x

霍克斯顿

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的生命周期均已终止,不再受支持。

通过服务版本(SR)将错误修复和向后兼容功能添加到每个版本系列中。一旦确定要使用哪个版本的Spring Cloud,就应该使用该版本系列的最新服务版本。您可以在我们的发行说明页面上找到最新的服务发行信息。

既然您已经知道要使用哪个发行版以及该发行版的最新服务版本,就可以将Spring Cloud BOM添加到您的应用程序中了。

<properties>
    <spring.cloud-version>Hoxton.SR8</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>
buildscript {
  dependencies {
    classpath "io.spring.gradle:dependency-management-plugin:1.0.10.RELEASE"
  }
}

ext {
  set('springCloudVersion', "Hoxton.SR8")
}


apply plugin: "io.spring.dependency-management"

dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}
笔记
发行火车包含 spring-cloud-dependenciesspring-cloud-starter-parent。您可以像spring-boot-starter-parent使用Maven一样使用父级。如果仅需要依赖项管理,则“依赖项”版本是同一事物的仅BOM表版本(它仅包含依赖项管理,没有插件声明或对Spring或Spring Boot的直接引用)。如果您使用的是Spring Boot父POM,则可以使用Spring Cloud中的BOM。相反,事实并非如此:使用Cloud父级使使用Boot BOM更改Spring Boot的版本及其依赖关系成为不可能,或者至少是不可靠的。

就像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 {
  compile 'org.springframework.cloud:spring-cloud-starter-config'
  compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
  //...
}

主要项目

Spring Cloud Config

由git存储库支持的集中式外部配置管理。配置资源直接映射到Spring,Environment但如果需要,可以由非Spring应用程序使用。

Spring Cloud Netflix

与各种Netflix OSS组件(Eureka,Hystrix,Zuul,Archaius等)集成。

春云巴士

事件总线,用于将服务和服务实例与分布式消息传递链接在一起。对于在群集中传播状态更改(例如配置更改事件)很有用。

Spring Cloud Cloudfoundry

将您的应用程序与Pivotal Cloud Foundry集成。提供服务发现实现,还可以轻松实现受SSO和OAuth2保护的资源。

Spring云开放服务经纪人

为构建实现Open Service Broker API的服务代理提供起点。

Spring云集群

Zookeeper,Redis,Hazelcast,Consul的领导层选举和常见状态模式以及抽象和实现。

春云领事

使用Hashicorp Consul进行服务发现和配置管理。

Spring Cloud安全性

为Zuul代理中的负载平衡的OAuth2其余客户端和身份验证标头中继提供支持。

春云侦探

Spring Cloud应用程序的分布式跟踪,与Zipkin,HTrace和基于日志的(例如ELK)跟踪兼容。

Spring Cloud数据流

针对现代运行时可组合微服务应用程序的云原生编排服务。易于使用的DSL,拖放式GUI和REST-API共同简化了基于微服务的数据管道的总体编排。

Spring云流

轻量级的事件驱动微服务框架,用于快速构建可以连接到外部系统的应用程序。在Spring Boot应用程序之间使用Apache Kafka或RabbitMQ发送和接收消息的简单声明性模型。

Spring Cloud Stream应用程序

Spring Cloud Stream应用程序是开箱即用的Spring Boot应用程序,使用Spring Cloud Stream中的绑定程序抽象提供与外部中间件系统(例如Apache Kafka,RabbitMQ等)的集成。

Spring云任务

一个短暂的微服务框架,可以快速构建执行有限数量数据处理的应用程序。用于向Spring Boot应用程序添加功能和非功能功能的简单声明。

Spring Cloud Task应用入门

Spring Cloud Task App Starters是Spring Boot应用程序,可以是任何进程,包括不会永远运行的Spring Batch作业,它们在有限的数据处理周期后结束/停止。

Spring云动物园管理员

使用Apache Zookeeper进行服务发现和配置管理。

Spring Cloud连接器

使各种平台上的PaaS应用程序轻松连接到后端服务,例如数据库和消息代理(该项目以前称为“ Spring Cloud”)。

Spring Cloud Starters

Spring Boot风格的启动程序项目可简化Spring Cloud使用者的依赖关系管理。(在Angel.SR2之后停产为一个项目,并与其他项目合并。)

Spring Cloud CLI

Spring Boot CLI插件,用于在Groovy中快速创建Spring Cloud组件应用程序

春云合约

Spring Cloud Contract是一个总括项目解决方案,可帮助用户成功实施“消费者驱动合同”方法。

Spring Cloud Gateway

Spring Cloud Gateway是基于Project Reactor的智能可编程路由器。

Spring Cloud OpenFeign

Spring Cloud OpenFeign通过自动配置并绑定到Spring Environment和其他Spring编程模型习惯用法,为Spring Boot应用程序提供了集成。

Spring云管道

Spring Cloud Pipelines提供了一个可靠的部署管道,其中包含一些步骤,以确保您的应用程序可以零停机时间进行部署,并且可以轻松地回滚某些错误。

弹簧云功能

Spring Cloud Function通过功能促进业务逻辑的实现。它支持跨无服务器提供程序的统一编程模型,以及独立运行(本地或在PaaS中)的功能。

发行列车

Spring Cloud是一个总括项目,由原则上具有不同发布节奏的独立项目组成。为了管理项目组合,将发布BOM(物料清单),并带有对单个项目的精选依赖关系。转到此处,了解有关Release Train命名约定的信息。

SpringInitializr

快速启动您的项目

使用 Spring Initializr引导您的应用程序 。

文献资料

每个Spring项目都有自己的项目。它详细说明了如何使用项目功能以及使用它们可以实现的功能。
2020.0.2 当前 GA 参考文件
2020.0.3- 快照 参考文件
霍克斯顿SR11 GA 参考文件
Hoxton.BUILD-SNAPSHOT 快照 参考文件

导游

该指南旨在在1530分钟内完成,提供了快速,动手的指导,用于为使用Spring的任何开发任务构建入门应用程序