Hello Spring Cloud

一、Spring Cloud和微服务之间的关系

(一)、微服务与Spring Cloud
微服务是一种理念,是一种模式,或者说微服务是一种架构风格。就像是Java中的一个接口,虽然大家都知道怎么回事,但是没办法直接拿过来用。我们如果要用呢,那必须还得实现它,而Spring Cloud就是微服务的一种实现,它真正从技术层面,支撑起了微服务的理念。
(二)Spring Cloud的诞生
在spring cloud诞生前,有着这么一位Java企业级开发领域的宠儿,他自诞生以来,就以开放的形式不断引领着技术的革新,他就是Spring Framework。而当微服务概念被提出以后,Spring Framework再次以弄潮儿的姿态进军微服务领域,他从各路开源框架中吸纳精华,博采众家之长,打造出了微服务领域的顶级框架Spring Cloud
尽管Spring Cloud是挂牌在Spring Framework下的顶级项目,但他却并不是由开源社区原生态打造的,他不仅吸纳了来自开源社区的优秀框架,还整合了来自NetFlix和Alibaba等一线大厂的优秀组件。
总结:Spring Cloud是众多开源组件的集合,他是一个基于springboot的,实现了微服务理念,并且微服务领域的基础设施简化为一个个配置组件的开源框架。

二、Spring Cloud的整体架构

(一)、架构图
Hello Spring Cloud_第1张图片
(网图,侵删)
(二)、Spring Cloud核心组件
1.服务治理组件
SpringCloud提供了三款服务治理组件,它们分别是Eureka、Consul和Nacus
服务治理是SpringCloud的核心环节,他管理着服务的整个生命周期(从注册到销毁)。
2.负载均衡组件
SpringCloud提供的负责负载均衡的组件叫Ribbon
Ribbon负载均衡框架起着分散服务器压力的作用,他能让微服务集群发挥出最大的优势
3.消息间调用组件
SpringCloud提供的服务调用组件叫Feign
Feign是基于Http的,他简化了服务调用方式,让系统可以像调接口一样调用调用不同的服务。
4.服务容错组件
Hystrix是SpringCloud提供的服务容错组件
我们常说的服务熔断、降级等高大上名称,实质上都是由Hystrix来完成
降级:降级,降低服务水平,发生异常后切换到备选方案
熔断:当服务器达到极限时,切断服务通路,采用降级逻辑。
5.配置中心和消息推送组件
Config组件是SpringCloud提供的分布式配置组件,他是一个中心化的配置中心,可以用来管理所有服务的配置;
Bus是SpringCloud提供的消息推送组件,它一般用于实现消息广播。
6.服务网关组件
服务网关是整个微服务的门户,流量并发最高的敌方。
SpringCloud提供了Gateway和Zuul两种网关组件
Gateway和Zuul可以通过Java代码或配置文件来编写路由规则,并且支持过滤器和限流功能。
7.调用链路追踪组件
Sleuth是Spring Cloud提供的调用链路追踪组件
因为整个系统被微服务化,所以一次请求可能会有多次服务调用,每一个环节都有可能造成调用失败,于是Sleuth就成了我们定位问题的神器。
Sleuth能将一次请求的调用链路串联起来,并且还具有日志打标、日志收集、链路串联、构建搜索索引等功能。
8.消息驱动组件
Stream是Spring Cloud提供的消息驱动组件
它代理了业务层和物理中间件的交互,至于实际用了的是Kafka还Rabbit,我们无需关系,同时对我们来说也是无感的。
它们让我们能轻松实现组播和广播
9.流量控制组件
Sentinel组件是阿里提供的,但它能和Spring Cloud无缝衔接
Sentinel主要应用于秒杀、熔断场景中的削峰,填谷。

三、Spring Cloud升级选择

(一)、Spring Cloud诞生
Spring Cloudz正式发布于2015年3月
Spring Cloud版本迭代非常快,每个大版本之间的时间跨度平均小于1年。虽然Spring Cloud版本更新快,但是它有一个好处,那就是Spring Cloud是新老版本交叉迭代的,在新的大版本更新的同时,也没有放弃对老的大版本的进行小版本升级。所以呢,Spring Cloud还是有非常高的质量保证。
(二)、Spring Cloud版本升级选择
1.如果使用了比较早期的版本,那么完全没必要升级到如今的版本,因为版本跨度太大,改动非常多,包括属性名,配置等各种变化,一旦跨太多大版本,可能产生较多问题。
2.如果使用的版本比较新,业务又需要用到新特性、新组件,那么升级是有必要的。并且后续版本核心结构定型了,不会存在太大的改动,向前兼容性也更好。
当然啦,最主要的还是要考虑业务需要、技术需要,安全补丁、上下游兼容和替换成本。
总结:由有经验的架构师或高级开发定期评估是否有升级的需求、需要关注新组件新功能对业务的正面影响、只能选择升级正式版本、升级还需做好全链路测试和做好回滚计划。

你可能感兴趣的:(微服务,spring,cloud)