[toc]
Spring Cloud构建于Spring Boot之上,它提供了一堆库,可以在添加到类路径时增强应用程序的行为。 您可以利用基本的默认行为来快速入门,然后在需要时,您可以配置或扩展以创建自定义解决方案。
## 快速开始
在项目中开始使用`spring-cloud`的推荐方法是使用依赖关系管理系统 - 下面的代码片段可以复制并粘贴到您的构建中。下例使用了config和eureka
~~~
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<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>
~~~
## 特征
spring Cloud专注于为典型用例提供良好的开箱即用体验,并为其提供可扩展性机制。
* 分布式/版本化配置
* 服务注册和发现
* 路由
* 服务到服务调用
* 负载均衡
* 断路器
* 全局锁
* 领导选举和集群状态
* 分布式消息
Spring Cloud采用纯粹的声明方法,通常只需更改类路径和/或注解即可获得许多功能。 作为发现客户端的示例应用程序:
~~~java
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
~~~
## 主要项目
### Spring Cloud Config
由git存储库支持的集中式外部配置管理。 配置资源直接映射到Spring`Environment`,但如果需要,可以由非Spring应用程序使用。
### Spring Cloud Netflix
与各种Netflix OSS组件集成(Eureka,Hystrix,Zuul,Archaius等)。
### Spring Cloud Bus
用于将服务和服务实例与分布式消息传递链接在一起的事件总线 用于跨群集传播状态更改(例如,配置更改事件)。
### Spring Cloud for Cloud Foundry
将您的应用程序与Pivotal Cloud Foundry集成。 提供服务发现实现,还可以轻松实现受SSO和OAuth2保护的资源。
### Spring Cloud Open Service Broker
提供构建实现Open Service Broker API的服务代理的起点。
### Spring Cloud Cluster
领导者选举和共同的有状态模式与Zookeeper,Redis,Hazelcast,Consul的抽象和实现。
### Spring Cloud Consul
Hashicorp Consul的服务发现和配置管理。
### Spring Cloud Security
为Zuul代理中的负载平衡OAuth2 rest客户端和身份验证头中继提供支持。
### Spring Cloud Sleuth
Spring Cloud应用程序的分布式跟踪,与Zipkin,HTrace和基于日志(例如ELK)的跟踪兼容。
### Spring Cloud Data Flow
适用于现代运行时的可组合微服务应用程序的云本机编排服务。 易于使用的DSL,拖放式GUI和REST-API共同简化了基于微服务的数据管道的整体编排。
### Spring Cloud Stream
轻量级事件驱动的微服务框架,可快速构建可连接到外部系统的应用程序。 在Spring Boot应用程序之间使用Apache Kafka或RabbitMQ发送和接收消息的简单声明模型。
### Spring Cloud Stream App Starters
Spring Cloud Stream App Starters是基于Spring Boot的Spring Integration应用程序,可提供与外部系统的集成。
### Spring Cloud Task
一种短命的微服务框架,用于快速构建执行有限数据处理的应用程序。 用于向Spring Boot应用程序添加功能和非功能功能的简单声明。
### Spring Cloud Task App Starters
Spring Cloud Task App Starters是Spring Boot应用程序,可能是任何进程,包括不能永久运行的Spring Batch作业,它们在有限的数据处理期后结束/停止。
### Spring Cloud Zookeeper
Apache Zookeeper的服务发现和配置管理。
### Spring Cloud for Amazon Web Services
与托管的Amazon Web Services轻松集成。 它提供了一种使用众所周知的Spring习语和API(如消息传递或缓存API)与AWS提供的服务进行交互的便捷方式。 开发人员可以围绕托管服务构建应用程序,而无需关心基础结构或维护。
### Spring Cloud Connectors
使各种平台中的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 Contract是一个总体项目,其中包含帮助用户成功实施消费者驱动合同方法的解决方案。
### Spring Cloud Gateway
Spring Cloud Gateway是一款基于Project Reactor的智能可编程路由器。
### Spring Cloud OpenFeign
Spring Cloud OpenFeign通过自动配置和Spring环境以及其他Spring编程模型习惯用法提供Spring Boot应用程序的集成。
### Spring Cloud Pipelines
Spring Cloud Pipelines提供了一个固定意见的部署管道,其中包含确保您的应用程序可以零停机方式部署并轻松回滚出错的步骤。
### Spring Cloud Function
Spring Cloud Function通过函数促进业务逻辑的实现。 它支持无服务器提供商之间的统一编程模型,以及独立运行(本地或PaaS)的能力。
## 发布列表
Spring Cloud是一个由独立项目组成的总体项目,原则上具有不同的发布节奏。 为了管理投资组合,发布了BOM(物料清单),其中包含一组针对单个项目的依赖关系(见下文)。 发布列表有名称而不是版本,以避免与子项目混淆。 这些名称是一个字母序列(所以你可以按时间顺序排序)伦敦地铁站的名称(“天使”是第一个版本,“布里克斯顿”是第二个版本)。 当各个项目的点数累积到临界质量时,或者其中一个项目中存在一个需要每个人都可用的关键错误时,发布列表将推出名称结尾为“.SRX”的“服务发布”, 其中“X”是一个数字。
### 发布列表内容
| Component | Edgware.SR4 | Finchley.SR1 | Finchley.BUILD-SNAPSHOT |
|---|---|---|---|
|spring-cloud-config| 1.4.4.RELEASE| 2.0.1.RELEASE |2.0.2.BUILD-SNAPSHOT|
|spring-cloud-netflix| 1.4.5.RELEASE| 2.0.1.RELEASE| 2.0.2.BUILD-SNAPSHOT|
|---|---|---|---|
Finchley使用Spring Boot 2.0.x构建,预计不会与Spring Boot 1.5.x一起使用。
使用依赖关系管理工具来控制版本。 如果您正在使用Maven,请记住声明的第一个版本获胜,因此按顺序声明BOM,第一个通常是最新版本(例如,如果您想使用带有Brixton.RELEASE的Spring Boot 1.3.6,请放置引导BOM 第一)。 如果您使用Spring依赖关系管理插件,则同样的规则适用于Gradle。
- 快速开始
- I.云原生应用
- II. Spring Cloud配置
- III. Spring Cloud Netflix
- 11 服务发现:Eureka客户端
- 11.1 如何引入eureka客户端
- 11.2 注册eureka
- 12.3 使用Eureka服务端的身份验证
- 11.4状态页面和健康指标
- 11.5 注册一个安全的应用
- 11.6 eureka的监控检查
- 11.7 eureka实例和客户端的元数据
- 11.8 使用eureka客户端
- 11.8.1 不使用Jersey的eureka client
- 11.9 可选的原生 Netflix EurekaClient
- 11.10 为什么注册服务这么慢
- 11.11 区域
- 12.服务发现:Eureka 服务端
- 12.1 如何引入 Eureka server
- 12.2 如何运行Eureka Server
- 12.3 高可用性和时区,区域
- 12.4 独立模式
- 12.5 对等意识
- 12.6 什么时候使用ip地址
- 12.7 保护eureka服务
- 13.断路器:Hystrix客户端
- 14 断路器:Hystrix仪表板
- 15. Hystrix 超时和Ribbon 客户端
- 16 客户端负载均衡:ribbon
- 17 外部配置:Archaius
- 18. 路由和过滤
- 18.1 如何引入zuul
- 18.2 嵌入式Zuul反向代理
- 18.3 Zuul Http Client
- 18.4 Cookies和敏感标题
- 18.5忽略的标题
- 18.6管理端点
- 18.6.1 路由端点
- 19. Polyglot 支持Sidecar
- 20 重试失败的请求
- 21 HTTP Client
- IV. Spring Cloud OpenFeign
- V. Spring Cloud Stream
- VI. Binder Implementations
- VII. Spring Cloud Bus
- VIII. Spring Cloud Sleuth
- IX. Spring Cloud Consul
- X. Spring Cloud Zookeeper
- XI. Spring Boot Cloud CLI
- XII. Spring Cloud Security
- XIII. Spring Cloud for Cloud Foundry