美文网首页
Hystrix(熔断器)基本知识

Hystrix(熔断器)基本知识

作者: 坤坤坤坤杨 | 来源:发表于2022-06-29 23:41 被阅读0次

1. 为什么要有熔断器

当服务出现性能问题时,很容易导致服务宕机,进而导致其他服务不可用,这样一直顺着链路走下去就会导致整个系统不可用,就产生了服务雪崩,这样显然是不可行的,为了提高系统的高可用性,就需要在服务出现问题时,不影响其他服务,不会导致整个系统崩溃,所以就有了Hystrix熔断器,来实现在服务出现问题时,对服务进行降级,熔断操作来保证系统的高可用。

2. 如何解决服务雪崩?

首先请求会打在有@HystrixCommand注解的方法上,这个时候Hystrix内部会维护一个默认大小为10的线程池(请求到达时才会创建线程)来处理请求,假如有10个请求已经过来了,这个时候线程池处于饱和状态,当继续有其他请求过来时,只能等待前10个请求处理完成,这个时候被调用的服务有性能问题,就会导致其他请求在被调用服务正常的情况下请求不到,影响到了正常的服务,所以这个时候就可以对有性能问题的服务做降级或者熔断操作。Hystrix提供了一种常用的解决方法:舱壁模式的形式(线程池隔离)使得请求不全都打到一个线程中处理,为特定的方法指定线程池执行,这样当一个服务不可用时,也不会影响到其他服务。

2.1 线程池隔离

线程隔离的优点:

  1. 应用程序会被完全保护起来,即使依赖的一个服务的线程池满了,也不会影响到应用程序的其他部分。
  2. 我们给应用程序引入一个新的风险较低的客户端lib的时候,如果发生问题,也是在本lib中,并不会影响到其他内容,因此我们可以大胆的引入新lib库。
  3. 当依赖的一个失败的服务恢复正常时,应用程序会立即恢复正常的性能。
  4. 如果我们的应用程序一些参数配置错误了,线程池的运行状况将会很快显示出来,比如延迟、超时、拒绝等。同时可以通过动态属性实时执行来处理纠正错误的参数配置。
  5. 如果服务的性能有变化,从而需要调整,比如增加或者减少超时时间,更改重试次数,就可以通过线程池指标动态属性修改,而且不会影响到其他调用请求。
  6. 除了隔离优势外,hystrix拥有专门的线程池可提供内置的并发功能,使得可以在同步调用之上构建异步的外观模式,这样就可以很方便的做异步编程(Hystrix引入了Rxjava异步框架)
    尽管线程池提供了线程隔离,客户端底层代码也必须要有超时设置,不能无限制的阻塞以致线程池一直饱和。如果使用的是无界队列的线程池,还有可能会产生OOM

线程隔离的缺点:

  1. 线程池的主要缺点就是它增加了计算的开销,每个业务请求(被包装成命令)在执行的时候,会涉及到请求排队,调度和上下文切换。不过Netflix公司内部认为线程隔离开销足够小,不会产生重大的成本或性能的影响。
  2. 对于不依赖网络访问的服务,比如只依赖内存缓存这种情况下,就不适合用线程池隔离技术,而是采用信号量隔离。

3. Hystrix工作原理

  1. 当调用出现错误时,开启一个时间窗(默认10秒)
  2. 在这个时间窗内,统计调用次数是否达到最小请求数?
  • 如果没有达到,咋重置统计信息,回到第1步,如果没有达到最小请求数即使请求全部失败,也会回到第1步
  • 如果达到了,则统计失败的请求数占所有请求数的百分比,是否达到阈值?,达到则跳闸(不在请求对应的服务),没有则重置统计信息,回到第1步
  1. 如果跳闸,则会开启一个活动窗口(默认5秒),每隔5秒,Hystrix会让一个请求通过,到达出现问题的服务,看是否恢复?如果恢复,重置断路器,回到第1步,如果失败。回到第3步

相关文章

  • SpringCloud 之Hystrix熔断器

    熔断器Hystrix 为什么要使用熔断器 什么是Hystrix Hystrix 中文意思就是豪猪 ,因其背上长满...

  • 本周学习(20211220-20211226)

    Hystrix提供的熔断器具有自我反馈,自我恢复的功能,Hystrix会根据调用接口的情况,让熔断器在closed...

  • Hystrix(熔断器)基本知识

    1. 为什么要有熔断器 当服务出现性能问题时,很容易导致服务宕机,进而导致其他服务不可用,这样一直顺着链路走下去就...

  • springcloud使用(四) 熔断器Hystrix

    熔断器的概念和优点参考 springcloud(四):熔断器Hystrix, 讲的很详细 基于feign的Hyst...

  • Feign调用报错:failed and no fallback

    timed-out and no fallback 这个错误基本是出现在Hystrix熔断器,熔断器的作用是判断该...

  • 熔断器 Hystrix

    熔断器Hystrix 版本 2.2.1.RELEASE 1. 介绍  Hystrix是一个延迟和容错工具,旨在隔离...

  • Hystrix的正确理解方式

    hystrix-logo-tagline-640.png 什么是熔断器 熔断器,原本是电路中在电器发生短路时的防止...

  • Hystrix熔断器执行机制

    本篇假设大家对Hystrix的执行过程及源码有一定的了解,这里介绍Hystrix的熔断器执行机制。 1.Hystr...

  • hystrix

    hystrix 三个设计原则 资源隔离利用线程池实现,每个依赖服务最多耗尽自己线程池的资源 熔断器熔断器 命令模式...

  • 熔断器---Hystrix

    Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能...

网友评论

      本文标题:Hystrix(熔断器)基本知识

      本文链接:https://www.haomeiwen.com/subject/eyyxbrtx.html