Spring Cloud 教程

Spring Cloud 笔记

Spring Cloud 简介


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月终止不再进行维护。