关注△mikechen的互联网架构△,10年+BAT架构经验倾囊相授
大家好,我是 mikechen | 陈睿 。
微服务在分布式架构占据了一个很重要的位置,而且大厂也特别喜欢考察。
而谈到微服务肯定就跑不了SpringCloud,本篇就先拿SpringCloud开刀,谈谈5大核心组件,希望对你掌握好SpringCloud有所帮助。
Spring Cloud
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。
它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。
简而言之:Spring Cloud 提供了构建分布式系统所需的“全家桶”。
Spring Cloud核心组件
Spring Cloud Netflix 集成众多Netflix的开源软件:Eureka, Hystrix, Zuul, Archaius,组成了微服务的最重要的核心组件,这里主要介绍5大常用组件。
1.Eureka
Eureka 作为 Spring Cloud 框架的注册中心,与之对应的是 Dubbo 框架的Zookeeper。
上图简要描述了Eureka的基本架构,由3个角色组成:
1)Service Provider: 暴露服务的服务提供方。
2)Service Consumer:调用远程服务的服务消费方。
3)EureKa Server: 服务注册中心和服务发现中心。
2.Hystrix
熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个别的服务,如下图:
如果各个服务正常运行,那大家齐乐融融,但是如果其中一个服务Service C崩坏掉会出现什么样的情况呢?如下图:
ServiceB依赖于ServiceC,由于ServiceC访问量比较大,由于ServiceC挂了,很可能ServiceB也会被拖累挂。
同理上游的ServiceA还依赖于ServiceB,同样也会被涉及。
最终一个服务失败,导致整条链路的服务都失败的情形,为造成大面积的服务雪崩效应。
这就给之前我们的大A股熔断是一个道理,所以针对这种情况需要考虑引入Hystrix 熔断机制,避免大面积雪崩等场景。
Hystrix 断路器是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方不会长时间、不必要占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
3.Netflix Zuul
Zuul是Spring Cloud全家桶中的微服务API网关。
所有从设备或网站来的请求都会经过Zuul到达后端的应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。
简单的话,Zuul 就是楼下保安亭的大爷,所有进入大楼的人,都需要大爷检查,得到大爷的许可。我们可以通过一张图理解。
4.Ribbon
Zuul默认和Ribbon结合实现了负载均衡的功能,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。
5.Spring Cloud Config
实际工作中,我们可能会有几十上百的微服务节点,每一个节点有需要有配置信息,比如数据库的连接,服务中心的地址等等,当中信息变化的时候,我们可能面临手动一台一台修改的囧境。为了解决上述问题,我们能否借鉴 Git 的思想,有一个标准的配置,当我们配置修改,我们只需要同步刷新一下即可,不用手动搬运呢?答案是有的,我们可以通过 Spring Cloud Config 达到同步更新配置信息。
Spring Cloud架构实现
通过这张图,可以比较清楚的了解到各组件配置使用运行机制:
1、请求统一通过API网关(Zuul)来访问内部服务.
2、网关接收到请求后,从注册中心(Eureka)获取可用服务
3、由Ribbon进行均衡负载后,分发到后端具体实例
4、微服务之间通过Feign进行通信处理业务
5、Hystrix负责处理服务超时熔断
6、Turbine监控服务间的调用和熔断相关指标。
以上,是 5 大 SpringCloud 核心组件的详细解析,欢迎评论区留言交流或拓展。
我是 mikechen | 陈睿 ,关注【mikechen的互联网架构】,10年+BAT架构技术倾囊相授。
本文已同步我的技术博客 www.mikechen.cc,更新至我原创的《30W+字大厂架构技术合集》中。