Spring Cloud概述

序号 内容
1 spring cloud 简介、核心功能、特点
2 spring cloud 的版本简介及与spring boot 的兼容性
3 spring cloud 的子项目与提供的能力
4 服务提供者与服务消费者

一、Spring Cloud 简介、核心功能、特点

1.1 简介、核心功能

官方简介:构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。

我所理解的 Spring Cloud 就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如 服务发现注册配置中心消息总线负载均衡断路器数据监控 等操作,而 Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。

1.2 特点及优缺点

优点:

  • 服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率
  • 可以更精准的制定优化服务方案,提高系统的可维护性
  • 微服务架构采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量
  • 适于互联网时代,产品迭代周期更短

缺点:

  • 微服务过多,治理成本高,不利于维护系统
  • 分布式系统开发的成本高(容错,分布式事务等)对团队挑战大

总的来说优点大过于缺点,目前看来SpringCloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud 的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习 Spring Cloud 是一个不错的选择。

二、spring cloud 的版本简介及与spring boot 的兼容性

2.1 版本介绍

Spring Cloud是一个由众多独立子项目组成的大型综合项目,每个子项目有不同的发行节奏,都维护着自己的发布版本号。Spring Cloud通过一个资源清单BOM(Bill of Materials)来管理每个版本的子项目清单。为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。

SpringCloud命名方式采用了伦敦地铁站的名称,同时根据字母表A-Z的顺序来对应版本时间顺序,比如:最早的Release版本:Angel,第二个Release版本:Brixton,然后是Camden、Dalston、Edgware,目前最新的是Finchley版本。 附官网地址:https://projects.spring.io/spring-cloud/

最新已经使用版本号的方式了(2021-03-19更新)

2.2 与springboot 版本兼容性

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

Spring Cloud Dalston,Edgware,Finchley和Greenwich的生命周期均已终止,不再受支持。

三、spring cloud 的子项目与提供的能力

SpringCloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。

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

SpringCloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。

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

Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。

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

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

SpringCloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。

SpringCloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

SpringCloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

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

SpringCloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。

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

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

四、服务提供者与服务消费者

img

可以看到,当用户访问电影购票系统时,首先访问的是前置系统“电影微服务”,而电影微服务在进行出票的过程中,需要获取用户之前注册的用户信息,此时就需要调用用户微服务的服务,来获取用户信息。这里电影微服务就是“服务消费者”,而用户微服务就是“服务提供者”,电影微服务需要消费用户查询服务,而用户微服务提供了用户查询服务。
有关“服务消费者”和“服务提供者”的定义:

服务提供者:服务的被调用方,即为其他服务提供服务的服务

服务消费者:服务的调用方,依赖其他服务的服务