0%

SpringCloud概述

Spring Cloud为开发人员提供了工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调产生了模板模式,使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑, bare metal data centres和管理平台,如云计算。

特征

Spring Cloud专注于为典型用例提供良好的开箱即用体验,并为其他用例提供扩展机制。

  • 分布式/版本配置

  • 服务注册和发现

  • 路由

  • service - to - service调用

  • 负载平衡

  • 断路器

  • 全局锁

  • 领导选举和集群状态

  • 分布式消息

入门

生成新的Spring Cloud Project

最简单的开始方式是访问start.spring.io,选择您想要使用的Spring Boot版本和Spring Cloud项目。这将在您生成项目时将相应的Spring Cloud BOM版本添加到您的Maven/Gradle文件中。

向现有的Spring引导应用程序添加Spring Cloud

如果您希望将Spring Cloud添加到现有的Spring引导应用程序中,第一步是确定应该使用的Spring Cloud版本。您在应用程序中使用的版本将取决于您正在使用的Spring Boot版本。

下表列出了哪个版本的Spring Cloud映射到哪个版本的Spring Boot。

Table 1. Release train Spring Boot compatibility

Release Train Boot Version
Hoxton 2.2.x, 2.3.x (Starting with SR5)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston

Spring Cloud Dalston, Edgware, and Finchley都达到了生命的终点,不再被支持。

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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-dependency和spring-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项目都包含启动程序,您可以将其添加为依赖项,以向项目添加各种云原生功能。 在许多情况下,仅通过将启动程序添加到类路径即可启用许多功能。starter名称记录在各个项目中。 以下是如何将Spring Cloud Config客户端和Spring Cloud Netflix Eureka客户端添加到应用程序的示例。

1
2
3
4
5
6
7
8
9
10
11
<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>
1
2
3
4
5
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-config'
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
//...
}

入门资源

入门者的Spring Cloud指导