Spring Cloud概述
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,可以让你以命令行方式快速建立云组件。
四、服务提供者与服务消费者
可以看到,当用户访问电影购票系统时,首先访问的是前置系统“电影微服务”,而电影微服务在进行出票的过程中,需要获取用户之前注册的用户信息,此时就需要调用用户微服务的服务,来获取用户信息。这里电影微服务就是“服务消费者”,而用户微服务就是“服务提供者”,电影微服务需要消费用户查询服务,而用户微服务提供了用户查询服务。
有关“服务消费者”和“服务提供者”的定义:
服务提供者:服务的被调用方,即为其他服务提供服务的服务
服务消费者:服务的调用方,依赖其他服务的服务