Spring Cloud常用的组件

1,205 阅读3分钟

Spring Cloud

Spring Cloud 来源于Spring,它利用Spring boot的便捷开发能力,如服务发现注册、配置中心、消息总线、负载均衡、熔断器、网关、数据监控等,都可以用Spring boot一键启动和部署。

下面将详细介绍Spring Cloud及其相关组件。

整体构成

Spring Cloud作为“全家桶"集成了 Spring家族的多个服务管理项目,是微服务架构集大成者,云计算最佳业务实践。

image.png

Spring Cloud Config配置中心

Spring Cloud Config配置中心,对不同微服务的配置文件实现统一管理;提供服务端和客户端支持(Spring Cloud Config Server和 Spring Cloud Config Client);集中式管理分布式环境中的配置信息(例如所有配置文件统一放在 gitee 平台中,与Spring完美兼容,可用于任何语言开发环境,基于 Http 协议。

Nacos注册中心

Nacos是一个更加易于构建原生应用的动态服务发现、配置管理中心和图形化的管理平台,它属于Spring Cloud Alibaba平台下的组件之一,主要是负责服务的发现和注册[11],以及对服务的配置文件进行统一平台式管理。

同时在CAP理论里面,也是同时满足CP和AP的组合,所谓的CAP主要是基于一致性、分区容错性、高可用性来组合,Nacos提供了服务端和客户端,内部通过定时任务发送心跳机制的方式来维持长时间提供服务。

Nacos作为注册中心整体的运行机制,服务注册、抓取注册表、续约、下线、定时剔除故障实例等一整套机制。

同时如果需要实现热部署,则需要集成Spring Cloud Bus消息总线,当配置中心的配置更新的时候只需要发送一次请求就可以让所有服务实现热刷新。

Ribboon负载均衡

Spring Cloud 提供了Ribbon 组件,可以实现服务与服务间的调用。还支持客户端的负载均衡。Spring Cloud 基于Netflix Feign,并整合了Ribbon,形成了OpenFeign声明式的服务对客户端进行调用,更加方便。

Hystrix容错保护机制

主要起到的作用是保护服务,当请求服务的失败率达到一定的阀值时,会打开熔断器拒绝后续的请求,在服务趋于稳定的情况下服务会进行恢复,会关闭断路开关。

资源隔离隔离模式为分两种,线程池隔离模式和信号量模式,一种是用线程池来存储请求,另一种是用原子计数器的方式来记录线程的运行数,根据线程数是否超过最大线程数的方式来判断是否对计数器进行加减操作,从而控制大规模的服务请求。

GateWay网关

Spring Cloud Gateway网关,提供路由键的配置,并且基于 Filter过滤链的方式提供了网关的对服务的过滤。Spring Cloud Gateway 是在 Spring Boot、Spring WebFlux,基于 Netty 运行。

前端访问后端API接口,中间需要访问网关系统对访问请求进行转发,进行访问的转发和调度。

Feign声明式服务调用

Spring Cloud Feign 微服务之间的调用方式,属于较轻量级的调用方式,可以通过注解来进行调用,请求模式也是基于模版化,传入参数封装成请求的模式。

远程调用主要是基于FeignClient注解作用在接口上,被标注的接口可以通过@Resource注入后使用,让Spring容器来管理。

集成插件

Spring Cloud还可以集成sentinel(链路追踪)、消息总线 (Bus)、消息驱动(Stream)等其他功能的组件,大部分组件都是实行轻量化,将包引入项目就可以使用对应的API接口和组件的配置写进项目的配置文件中,实现其主要的功能,实现开箱即用,快速启动。