首页 > 其他分享 > 7、Hystrix 断路器执行原理

7、Hystrix 断路器执行原理

时间:2023-05-26 19:12:47浏览次数:38  
标签:请求 Hystrix 短路 value 断路器 原理 Setter HystrixCommandProperties

断路器深入的工作原理

1、如果经过断路器的流量超过了一定的阈值,HystrixCommandProperties.circuitBreakerRequestVolumeThreshold()

举个例子,可能看起来是这样子的,要求在10s内,经过短路器的流量必须达到20个;在10s内,经过短路器的流量才10个,那么根本不会去判断要不要短路

2、如果断路器统计到的异常调用的占比超过了一定的阈值,HystrixCommandProperties.circuitBreakerErrorThresholdPercentage()

如果达到了上面的要求,比如说在10s内,经过短路器的流量(你,只要执行一个command,这个请求就一定会经过短路器),达到了30个;同时其中异常的访问数量,占到了一定的比例,比如说60%的请求都是异常(报错,timeout,reject),会开启短路

3、然后断路器从close状态转换到open状态

4、断路器打开的时候,所有经过该断路器的请求全部被短路,不调用后端服务,直接走fallback降级

5、经过了一段时间之后,HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds(),会half-open,让一条请求经过断路器,看能不能正常调用。如果调用成功了,那么就自动恢复,转到close状态

断路器,会自动恢复的,half-open,半开状态

6、circuit breaker断路器的配置

(1)circuitBreaker.enabled

控制断路器是否允许工作,包括跟踪依赖服务调用的健康状况,以及对异常情况过多时是否允许触发短路,默认是true

HystrixCommandProperties.Setter()
   .withCircuitBreakerEnabled(boolean value)

(2)circuitBreaker.requestVolumeThreshold

设置一个rolling window,滑动窗口中,最少要有多少个请求时,才触发开启短路

举例来说,如果设置为20(默认值),那么在一个10秒的滑动窗口内,如果只有19个请求,即使这19个请求都是异常的,也是不会触发开启短路器的

HystrixCommandProperties.Setter()
   .withCircuitBreakerRequestVolumeThreshold(int value)

(3)circuitBreaker.sleepWindowInMilliseconds

设置在短路之后,需要在多长时间内直接reject请求,然后在这段时间之后,再重新导holf-open状态,尝试允许请求通过以及自动恢复,默认值是5000毫秒

HystrixCommandProperties.Setter()
   .withCircuitBreakerSleepWindowInMilliseconds(int value)

(4)circuitBreaker.errorThresholdPercentage

设置异常请求量的百分比,当异常请求达到这个百分比时,就触发打开断路器,默认是50,也就是50%

HystrixCommandProperties.Setter()
   .withCircuitBreakerErrorThresholdPercentage(int value)

(5)circuitBreaker.forceOpen

如果设置为true的话,直接强迫打开断路器,相当于是手动短路了,手动降级,默认false

HystrixCommandProperties.Setter()
   .withCircuitBreakerForceOpen(boolean value)

(6)circuitBreaker.forceClosed

如果设置为ture的话,直接强迫关闭断路器,相当于是手动停止短路了,手动升级,默认false

HystrixCommandProperties.Setter()
   .withCircuitBreakerForceClosed(boolean value)

标签:请求,Hystrix,短路,value,断路器,原理,Setter,HystrixCommandProperties
From: https://www.cnblogs.com/huigui-mint/p/17435605.html

相关文章

  • 4、深入分析hystrix执行时的8大流程步骤以及内部原理
    前面了解了Hystrix最基本的支持高可用的技术:资源隔离 + 限流。创建command;执行这个command;配置这个command对应的group和线程池。开始执行这个command,调用了这个command的execute()方法之后,Hystrix底层的执行流程和步骤以及原理是什么1、构建一个Hystri......
  • 3、Hystrix 隔离策略细粒度控制
    Hystrix实现资源隔离,有两种策略:线程池隔离信号量隔离对资源隔离这一块东西,其实可以做一定细粒度的一些控制。1、execution.isolation.strategy指定了HystrixCommand.run()的资源隔离策略,THREAD或者SEMAPHORE,一种是基于线程池,一种是信号量线程池机制,每个command运行在一......
  • 详解GaussDB(DWS)用户监控原理及应用
    摘要:本文将聚焦于用户监控的原理及应用进行介绍。本文分享自华为云社区《GaussDB(DWS)监控工具指南(二)用户级监控》,作者:幕后小黑爪。前言资源监控是整个运维乃至整个产品生命周期重要的一环,事前及时语句发现故障,事后提供详实的数据用于追查定位问题。GaussDB(DWS)整个资源监控......
  • 深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick
    深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、TransformerEncoder等原理详细讲解1.XLNet:GeneralizedAutoregressivePretrainingforLanguageUnderstanding1.1.从AR和AE模型到XLNet模型自回归模型(AutoregressiveModel,AR),通过估计......
  • 高可用中间件之Keepalived的原理介绍与部署实践
    (文章目录)前言Keepalived是一个用c语言编写的路由软件。这个实验的主要目标是为Linux系统和基于Linux的基础设施提供简单而健壮的负载平衡和高可用性工具。keepalive实现了一组检查器,可以根据服务器的运行状况动态地、自适应地维护和管理负载平衡的服务器池。另一方面,通过VRRP......
  • 第三节:原理图绘制
    -设计标准栅格,捕捉介绍-选择符号,放置符号,自动连线,T节点,连接节点 调整栅格: 插入符号:  放置符号:通过TAB键来改变元器件的方向符号的快捷: ......
  • 计算机网络(二)OSI七层模型、TCPIP四层模型与原理五层模型
    1OSI参考七层模型(法律上的标准)OSI七层模型OSI:开放式互连通信参考模型分层的原因:标准化、降低各个层之间的关联依赖①应用层:能产生流量能够和用户交互的应用②表示层:加密压缩,开发人员考虑的问题③会话层:服务器和客户端建立的会话netstat-nb④传输层:进行可靠传输、不......
  • 网络灌包命令_iperf工作原理及使用方法
         网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Ipe......
  • ThreadLocal 的应用及原理
    1.是什么JDK对ThreadLocal类的描述为:此类提供线程局部变量。这些变量与普通变量的不同之处在于,每个访问一个变量的线程(通过其get或set方法)都有自己的、独立初始化的变量副本。ThreadLocal实例通常是类中的私有静态字段,这些字段希望将状态与线程(例如,用户ID或事务ID)相关联。......
  • 深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用
    深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用场景、改进技巧等详细讲解1.Transformer-XL:AttentiveLanguageModelsBeyondsaFixed-LengthContext1.1.Transformer-XL简介在正式讨论Transformer-XL之前,我们先来看看经典的Transform......