Spring Cloud Hystrix原理详细介绍

Spring Cloud中的Hystrix是Netflix开源的一款针对分布式系统延迟和容错的库,其目的是通过添加延迟容忍和容错逻辑,从而控制分布式服务之间的交互。

对于一个复杂的分布式系统,包含的应用可能多达数十个,这些应用有许多依赖项目,每个依赖项目在某个时刻不可避免会失败导致故障,如果不对这些故障进行隔离,整个分布式系统都可能会崩溃。

借助官网的一个例子来说明,假设某个应用程序依赖30多个服务,每个服务正常运行的概率是99.99%,那么系统可用的概率是99.9930=99.7%,也就是说,每个服务出现故障的概率是0.3%,十亿个请求的故障就是3000000个,即使所有依赖具有出色的正常运行时间,每个月至少会有2小时以上的服务是不可用的,现实情况中,情况可能会更糟糕。

当一切正常时,请求情况如下图所示。

1605782082620_一切正常的请求情况.jpg

一切正常的请求情况
当其中有一个系统有延迟时,它可能阻塞整个用户请求,具体如下图所示。

1605782114853_系统出现延迟的情况.jpg

系统出现延迟的情况

在高流量情况下,一个后端的依赖延迟可能会导致所有服务的资源在数秒内变的饱和,这也就意味着,后续如果再有请求将无法提供服务,应用会出现故障。比故障更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,从而备份队列、线程和其他资源,从而导致整个系统出现更多级联故障,如下图所示。

1605782137511_系统出现更多级联故障情况.jpg

系统出现更多级联故障情况

Hystrix的出现就是为了解决上述问题的,它封装了每个依赖项,每个依赖项彼此隔离,当延迟发生时,它会被限制在资源中,并包含回退逻辑,该逻辑决定在依赖发生任何类型故障时应作出何种响应。

使用Hystrix包装依赖项后,前面图中的架构会发生变化,如下图所示。

1605782159820_使用Hystrix包装依赖后的架构.jpg

使用Hystrix包装依赖后的架构

在上图中,Hystrix被设计的目标是阻止级联故障,对通过第三方客户端访问的依赖项的延迟和故障进行保护和控制。Hystrix实现这一目标的大致思路具体如下:

(1) 将外部依赖的访问请求封装在独立的线程中,进行资源隔离。

(2) 对于超出设定阈值的服务调用,直接进行超时,不允许其耗费过长时间阻塞线程。

(3) 每个依赖服务维护一个独立的线程池,一旦线程池满了,直接拒绝服务的调用。

(4) 统计依赖服务调用的成功次数、失败次数、拒绝次数、超时次数等结果。

(5) 在一段时间内,如果服务调用的异常次数超过一定阈值,就会触发熔断停止对特定服务的所有请求,在一定时间内对服务调用直接降级,一段时间后再次进行自动尝试恢复。

(6) 如果某个服务出现调用失败、被拒绝、超时等异常情况,自动调用fallback降级机制。

(7) 实时监控指标和配置变化。

关于Hystrix工作机制的深入分析将在后面小节详解,这里大家对Hystrix熔断机制有个大致了解即可。

推荐学习:4天从浅入深精通SpringCloud 微服务架构
完整视频:http://yun.itheima.com/course/600.html?2012stt
配套资料:https://pan.baidu.com/s/1DFrV3m4mF8Y7-Rkgv98irw 提取码:xj0g

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Cloud Hystrix是一种用于构建容错和弹性系统的开源库,它允许开发者在分布式系统处理延迟和故障,并在这些系统之间提供后备选Hystrix原理可以概括为以下几点。 首先,Hystrix通过使用线程池隔离和信号量隔离的方式,为每个依赖服务创建了一个独立的执行环境。这意味着每个服务的执行都是在独立的线程或信号量完成的,这样可以防止由于依赖服务的故障而导致整个系统崩溃。 其次,Hystrix使用了断路器模式来防止故障的扩散。当一个依赖服务的失败率超过预定义的阈值,断路器会打开,进而停止请求该服务,而是直接返回预定义的fallback值。这个过程可以有效地保护系统免受失败服务的影响,并且在服务恢复正常后,断路器会逐渐闭合,重新允许对该服务的请求。 另外,Hystrix还提供了实监控和报告功能。通过使用Hystrix Dashboard,开发者可以实监控每个依赖服务的运行状态,括请求的成功率、失败率、响应间等指标,以及断路器的状态。这对于故障诊断和性能优化非常有帮助。 最后,Hystrix还支持请求缓存和请求合并等功能,以进一步提升系统的性能和容错能力。通过对重复的请求进行合并和缓存,可以减少网络开销和服务的负载,同也减少了对依赖服务的请求次数,降低了故障的风险。 总的来说,Spring Cloud Hystrix通过使用断路器、隔离和容错等机制,能够保护系统免受依赖服务的故障影响,并提供实监控和报告,以及其他增强性能的功能,从而提高了分布式系统的可靠性和弹性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值