Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。
Spring Cloud 组成
Spring Cloud 是一个由众多独立子项目组成的大型综合项目。
- Spring Cloud Netflix
核心组件(类似于国内的 Duboo),对多个 Netflix OSS 开源套件进行整理,是 Netflix 公司开发的组件。
- Eureka:服务治理组件,包含服务注册中心,服务注册与发现机制的实现。
- Hystrix:容错管理组件,实现断路器模式,帮助服务出现的延迟和为故障提供强大的容错能力。
- Ribbon:客户端负载均衡的服务调用组件。
- Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
- Zuul:网关组件,提供智能路由、访问过滤功能。
- Archaius:外部化配置组件。
- Spring Cloud Consul
服务发现与配置管理组件,Consul 是一套 HashiCorp 公司开源的分布式服务发现和配置管理系统。
- Spring Cloud Zookeeper
基于 Zookeeper 的服务发现与配置管理组件。
- Spring Cloud Config
分布式系统中的外部配置提供服务器和客户端支持。
- Spring Cloud Bus
事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。
- Spring Cloud Stream
数据流操作开发包,封装了与 Redis、RabbitMq、Kafka 等发送接收消息。
Spring Cloud 官方网址:https://spring.io/projects/spring-cloud
Spring Cloud 特点
Spring Cloud 有以下特点:
- 开箱即用,快速启动。
- 约定优于配置。
- 适用于各种环境。开发、部署在 PC Server 或各种云环境(例如,阿里云、AWS 等)均可。
- 隐藏了组件的复杂性,并提供声明式、无 xml 的配置方式。
- 轻量级的组件。Spring Cloud 整合的组件大多比较轻量。例如 Eureka、Zuul 等等,都是各自领域轻量级的实现。
- 组件丰富,功能齐全。Spring Cloud 为微服务架构提供了非常完整的支持。例如, 配置管理、服务发现、断路器、微服务网关等。
- 选型中立、丰富。例如,Spring Cloud 支持使用 Eureka、Zookeeper 或 Consul 实现服务发现。
- 灵活。Spring Cloud 的组成部分是解耦的,开发人员可按需灵活挑选技术选型。
Spring Cloud 版本
Spring Cloud 是一个由众多独立子项目组成的大型综合项目,每个子项目有不同的发行节奏,都维护着自己的发布版本号。Spring Cloud 通过一个资源清单 BOM(Bill of Materials)来管理每个版本的子项目清单。为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。
这些版本名称的命名方式采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序,比如:最早的 Release 版本:Angel,第二个 Release 版本:Brixton,然后是 Camden、Dalston、Edgware,Finchley 等等。
当一个版本的 Spring Cloud 项目的发布内容积累到临界点或者解决了一个严重 bug 后,就会发布一个“service releases”版本,简称 SRX 版本,其中 X 是一个递增数字。
Component | Edgware.SR5 | Finchley.SR2 | Finchley.BUILD-SNAPSHOT |
---|---|---|---|
spring-cloud-aws | 1.2.3.RELEASE | 2.0.1.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-cloud-bus | 1.3.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-cloud-cli | 1.4.1.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-cloud-commons | 1.3.5.RELEASE | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-contract | 1.2.6.RELEASE | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-config | 1.4.5.RELEASE | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-netflix | 1.4.6.RELEASE | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-security | 1.2.3.RELEASE | 2.0.1.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-cloud-cloudfoundry | 1.1.2.RELEASE | 2.0.1.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-cloud-consul | 1.3.5.RELEASE | 2.0.1.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-sleuth | 1.3.5.RELEASE | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-stream | Ditmars.SR4 | Elmhurst.SR1 | Elmhurst.BUILD-SNAPSHOT |
spring-cloud-zookeeper | 1.2.2.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-boot | 1.5.16.RELEASE | 2.0.6.RELEASE | 2.0.7.BUILD-SNAPSHOT |
spring-cloud-task | 1.2.3.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-cloud-vault | 1.1.2.RELEASE | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-gateway | 1.0.2.RELEASE | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT |
spring-cloud-openfeign | 2.0.2.RELEASE | 2.0.2.BUILD-SNAPSHOT | |
spring-cloud-function | 1.0.1.RELEASE | 1.0.0.RELEASE | 1.0.1.BUILD-SNAPSHOT |
Spring Cloud 版本与 Spring Boot 版本之间的关系。
- Finchley 与 Spring Boot 2.0.x 兼容,不支持 Spring Boot 1.5.x。
- Dalston 和 Edgware 与 Spring Boot 1.5.x 兼容,不支持 Spring Boot 2.0.x。
- Camden 是构建在 Spring Boot 1.4.x 之上,但也支持 1.5.x。
- Brixton 是构建在 Spring Boot 1.3.x 之上,但也支持 1.4.x。
- Angel 是构建在 Spring Boot 1.2.x 之上,但也兼容 Spring Boot 1.3.x。
Angel 和 Brixton 两个版本已于2017年7月终止不再进行维护。