前言

springCloud是目前比较火的技术,本系列博客主要是对自己学习过程的一个总结和记录。

Spring Cloud简介

尽管Spring Cloud带有“Cloud”的字样,但它并不是云计算解决方案,而是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集。

使用Spring Cloud开发的应用程序非常适合在Docker或者PaaS(例如Cloud Foundry)上部署,所以又叫做云原生应用(Cloud Native Application)。云原生(Cloud Native)可简单理解为面向云环境的软件架构。说到云原生,就不得不提一下《十二要素应用宣言(12-factor Apps)》,这是云原生架构的方法论与最佳实践。

拓展阅读

  • 《Cloud Native Application》电子书:https://pivotal.io/platform-as-a-service/migrating-to-cloud-native-application-architectures-ebook
  • 《十二要素应用宣言(12-factor Apps)》中文版:https://12factor.net/zh_cn/

核心功能

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号

Spring Cloud Config Spring

配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_Cloud_02

Spring Cloud Bus Spring

事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_Cloud_03

Eureka Netflix

云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_04

Hystrix Netflix

熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_05

Zuul Netflix

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_spring_06

Archaius Netflix

配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_spring_07

Consul HashiCorp

封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_Cloud_08

Spring Cloud for Cloud Foundry Pivotal

通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_09

Spring Cloud Sleuth Spring

日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_Cloud_10

Spring Cloud Data Flow Pivotal

大数据操作工具,作为Spring XD的替代产品,它是一个混合计算模型,结合了流数据与批量数据的处理方式。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_11

Spring Cloud Security Spring

基于spring security的安全工具包,为你的应用程序添加安全控制。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_12

Spring Cloud Zookeeper Spring

操作Zookeeper的工具包,用于使用zookeeper方式的服务发现和配置管理。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_Cloud_13

Spring Cloud Stream Spring

数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_14

Spring Cloud CLI Spring

基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_15

Ribbon Netflix

提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_16

Turbine Netflix

Turbine是聚合服务器发送事件流数据的一个工具,用来监控集群下hystrix的metrics情况。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_Cloud_17

Feign OpenFeign

Feign是一种声明式、模板化的HTTP客户端。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_Cloud_18

Spring Cloud Task Spring

提供云端计划任务管理、任务调度。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_spring_19

Spring Cloud Connectors Spring

便于云端应用程序在各种PaaS平台连接到后端,如:数据库和消息代理服务。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_spring_20

Spring Cloud Cluster Spring

提供Leadership选举,如:Zookeeper, Redis, Hazelcast, Consul等常见状态模式的抽象和实现。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_版本号_21

Spring Cloud Starters Pivotal

Spring Boot式的启动项目,为Spring Cloud提供开箱即用的依赖管理。

 

版本简介

我们知道,大多数Spring项目都是以“主版本号.次版本号.增量版本号.里程碑版本号”的形式命名版本号的,例如Spring Framework稳定版本4.3.5.RELEASE、里程碑版本5.0.0.M4等。其中,主版本号表示项目的重大重构;次版本号表示新特性的添加和变化;增量版本号一般表示bug修复;里程碑版本号表示某版本号的里程碑。

然而,Spring Cloud并未使用这种方式管理版本。下面我们来详细探讨一下Spring Cloud的版本。

我们来看一下Spring Cloud的版本,如图所示。

Spring Cloud 整合 Spring Cloud Security spring cloud wii_spring_22

由图可知,Spring Cloud是以英文单词 SRX 的形式命名版本号的。那么英文单词和SR分别表示什么呢?

Spring Cloud是一个综合项目,它包含很多的子项目。由于子项目也维护着自己的版本号,Spring Cloud采用了这种版本命名方式,从而避免与子项目的版本混淆。其中,英文单词叫做“release train”,Angel、Brixton、Camden等都是伦敦地铁站的名称,它们按照字母顺序发行,我们可将其理解为主版本的演进。SR表示“Service Release”,一般表示Bug修复;在SR版本发布之前,会先发布一个Release版本,例如Camden RELEASE。

经过以上讲解,相信大家就能很好地理解Spring Cloud的版本了。例如,Camden SR3表示Camden版本的第3次Bug修复版本。

TIPS

  • Spring Cloud版本发布记录可详见:https://github.com/spring-cloud/spring-cloud-release/releases ,从中我们可清晰看到Spring Cloud版本发布的时间及先后顺序。
  • Spring Cloud版本演进计划:https://github.com/spring-cloud/spring-cloud-release/milestones,从中我们可了解Spring Cloud的版本演进计划,例如计划什么时间点发布什么版本等。
  • 事实上,Spring有不少项目使用类似的命名方式。例如Spring Data、Spring Cloud Stream等。

子项目一览

理解Spring Cloud的版本后,我们来看一下各版本Spring Cloud包含的子项目及版本。不同的Spring Cloud版本有不同的子项目:

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兼容性【重要】

Spring Cloud版本

Spring Boot版本

Greenwich

2.1.x

Finchley

2.0.x

Edgware

1.5.x

Dalston

1.5.x

可前往https://spring.io/projects/spring-cloud#overview查看版本兼容性。