当前位置: 首页>后端>正文

SpringCloud微服务组件介绍

Spring Cloud是一系列框架的有序集合(框架集),他利用Spring Boot的开发便利性巧妙的简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。

SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用SpringBoot的开发风格做到一键启动和部署。

SpringCloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包

组件\框架 Spring Cloud Spring Cloud Alibaba
微服务注册中心 Eureka、Zookeeper、Consul Nacos
微服务调用(负载均衡) Feign(Ribbon) Dubbo RPC
服务熔断 Hystrix Sentinel
微服务网关(路由) Gateway、Zuul Dubbo PROXY
消息中间件 RabbitMQ RocketMQ
配置中心 Config、Zookeeper Nacos
分布式事务 - Seata
链路追踪 Zipkin -

下面是Spring Cloud的整体架构图:


SpringCloud微服务组件介绍,第1张

1、Spring Cloud Eureka(微服务注册中心)

注册中心可以说是微服务架构中的“通讯录”,他记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其他服务时,就在这里找到对应服务的地址,进行调用。

注册中心的主要作用

  • 服务发现
    -服务注册/反注册:
    -服务订阅/取消订阅:
    -服务路由:

  • 服务配置
    -配置订阅:
    -配置下发:

  • 服务健康检测
    -检测服务提供者的健康情况:

2、Spring Cloud Ribbon(负载均衡)

Ribbon是Netflix发布的一个负载均衡,有助于控制HTTP和TCP客户端行为。在Spring Cloud中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。

在Spring Cloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务。

Ribbon原理

  • 通过LoadBalanceInterceptro拦截器,拦截请求的域名,在本地客户端实现一个负载均衡(默认轮询)
  • 会在客户端开启一个定时任务,拉取注册中心的服务地址
  • 如果一个地址调用失败,会从新从本地服务地址获取一个新的,从新发起请求。(比如 一个机器离线了,但是本地的服务地址还没有及时刷新)

几种负载均衡策略:

  • RandomRule:随机选取负载均衡策略。
  • RoundRobinRule:轮询负载均衡策略。
  • WeightedResponseTimeRule:响应时间作为选取权重的负载均衡策略,根据平均响应时间计算所有服务的权重,响应时间越短的服务权重越大,被选中的概率越高。刚启动时,如果统计信息不足,则使用线性轮询策略,等信息足够时,再切换到WeightedResponseTimeRule。
  • AvailabilityFilteringRule:按可用性进行过滤服务的负载均衡策略,会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数超过阈值的服务,然后对剩余的服务列表进行线性轮询。

3、Spring Cloud Hystrix(熔断组件)

Hystrix是Netflix开源的一款容错框架,包含常用的容错方法。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。Hystrix利用熔断、线程池隔离、信号量隔离、降级回退等方法来处理依赖隔离,使系统变得高可用

Hystrix主要提供了以下几种容错方法:

  • 资源隔离
  • 服务降级
  • 服务熔断
  • 服务限流

4、Spring Cloud Gateway(服务网关)

Spring Cloud Gateway是Spring官方推出的服务网关的实现框架,相对于服务网关的概念有点类似于传统的反向代理服务器(如nginx),但反向代理一般都只是做业务无关的转发请求,而服务网关与服务的整合程度更高,可以看作也是整个服务体系的组成部分,通过过滤器等组件可以在网关中集成一些业务处理的操作(比如权限认证等)。

核心功能:

  • 路由
  • 断言
  • 过滤器
  • 网关限流

5、Spring Cloud Stream(消息驱动微服务)

Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架。

特点:
屏蔽底层 MQ 实现细节,Spring Cloud Stream 的 API 是统一的。如果从 Kafka 切到 RocketMQ,可以直接修改配置。
与 Spring 生态整合更加方便。Spring Cloud Data Flow的流计算都是基于 Spring Cloud Stream;Spring Cloud Bus 消息总线内部也是用的 Spring Cloud Stream。

6、Spring Cloud Config (配置中心)

配置中心功能:

  • 集中式的管理所有微服务中的配置文件
  • 针对不同环境提供不同的配置
  • 运行期的动态更新

7、Spring Cloud Sleuth (链路追踪)

分布式链路追踪,就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节点上的耗时,请求具体到达哪台机器上、每个服务节点的请求状态等等。

分布式链路追踪方案:

  1. Twitter的Zipkin
  2. 阿里的鹰眼

参考文章
https://www.zhihu.com/question/283286745/answer/1700883396


https://www.xamrdz.com/backend/3cd1929364.html

相关文章: