`

HystrixCommandProperties的熔断参数配置

 
阅读更多
下面是HystrixCommandProperties的熔断参数配置。
HystrixCommandProperties.Setter commandProperties =HystrixCommandProperties. Setter()
……
.withCircuitBreakerEnabled(true)//默认为true
.withCircuitBreakerForceClosed(false)//默认为false
.withCircuitBreakerForceOpen(false)//默认为false
.withCircuitBreakerErrorThresholdPercentage(50)//默认为50%
.withCircuitBreakerRequestVolumeThreshold(20) //默认为20
.withCircuitBreakerSleepWindowInMilliseconds(5000)//默认为为5s
具体配置含义如下所示。
withCircuitBreakerEnabled:是否开启熔断机制,默认为true。
withCircuitBreakerForceClosed:是否强制关闭熔断开关,如果强制关闭了熔断开关,则请求不会被降级,一些特殊场景可以动态配置该开关,默认为false。
withCircuitBreakerForceOpen:是否强制打开熔断开关,如果强制打开可熔断开关,则请求强制降级调用getFallback处理,可以通过动态配置来打开该开关实现一些特殊需求,默认为false。
withCircuitBreakerErrorThresholdPercentage:如果在一个采样时间窗口内,失败率超过该配置,则自动打开熔断开关实现降级处理,即快速失败。默认配置下采样周期为10s,失败率为50%。
withCircuitBreakerRequestVolumeThreshold:在熔断开关闭合情况下,在进行失败率判断之前,一个采样周期内必须进行至少N个请求才能进行采样统计,目的是有足够的采样使得失败率计算正确,默认为20。
withCircuitBreakerSleepWindowInMilliseconds:熔断后的重试时间窗口,且在该时间窗口内只允许一次重试。即在熔断开关打开后,在该时间窗口允许有一次重试,如果重试成功,则将重置Health采样统计并闭合熔断开关实现快速恢复,否则熔断开关还是打开状态,执行快速失败。
熔断后将降级调用getFallback进行处理(fallbackEnabled=true),通过Command如下方法可以判断是否熔断了。
isCircuitBreakerOpen:熔断开关是否打开了,通过“circuitBreakerForceOpen().get()|| (!circuitBreakerForceClosed().get() && circuitBreaker.isOpen())”判断。
isResponseShortCircuited:isCircuitBreakerOpen=true,且调用getFallback时返回true。
3 采样统计
Hystrix在内存中存储采样数据,支持如下两种采样。
BucketedCounterStream:计数统计,比如记录一定时间窗口内的失败、超时、线程池拒绝、信号量拒绝数量,记录N组。写入数据时写到第N组,统计时使用前N-1组数据,因为第N个刚开始统计时是随时变化的。然后基于时间滚转采样分组即可。

采样统计滚转时间窗口为10s,每秒1个分组(桶),即每秒采样一次,每个分组记录着当前桶的成功、失败、超时、线程拒绝统计数量。
RollingConcurrencyStream:最大并发数统计,如Command/ThreadPool的最大并发数。
RollingDistributionStream:延时百分比统计,同HystrixRollingNumber类似,差别在于其是百分位数的统计。比如每组记录P(比如100)个数值,统计时使用前N-1组数据,将分组内数据按从小到大排序,然后累加,处于第p%位置的数值就是p百分位数,通过它可以实现P50、P99、P999,Hystrix用来统计时延的分布情况。最新版本Hystrix使用HdrHistogram库来实现统计。
3.1 Command、ThreadPool计数/最大并发采样统计
HystrixThreadPoolProperties.Setter threadPoolProperties = HystrixThreadPoolProperties.Setter()
……
.withMetricsRollingStatisticalWindowInMilliseconds(1000)
.withMetricsRollingStatisticalWindowBuckets(10);
HystrixCommandProperties.Setter commandProperties =HystrixCommandProperties. Setter()
……
.withMetricsRollingStatisticalWindowInMilliseconds(10000)
.withMetricsRollingStatisticalWindowBuckets(10);
withMetricsRollingStatisticalWindowInMilliseconds:配置采样统计滚转时间窗口,默认为10s。
withMetricsRollingStatisticalWindowBuckets:配置采用统计滚转时间窗口内的桶的总数量,默认为10,比如时间窗口为10000,桶数量为10,则采样统计间隔为每秒一个桶统计。
3.2 Command健康度采样统计
HystrixCommandProperties.Setter commandProperties =HystrixCommandProperties. Setter()
……
.withMetricsRollingStatisticalWindowInMilliseconds(10000)
.withMetricsHealthSnapshotIntervalInMilliseconds(500);
withMetricsRollingStatisticalWindowInMilliseconds:同上所示。
withMetricsHealthSnapshotIntervalInMilliseconds:记录健康采用统计的快照频率,默认为500ms,即500ms一个采样统计间隔,那么桶的数量为10000/500=20个。
该统计在熔断机制中使用,如果计算熔断的频率非常高,则要控制好采样的频率,如果太频繁,那么将造成CPU计算密集,如10ms一个周期,因为会对前N-1个桶进行统计,计算累加时会耗费CPU。所以选择Hystrix要注意此处的性能消耗和调优。如果此处是性能瓶颈,则可以废掉统计,或者按照Hystrix思路实现自己的降级组件。
分享到:
评论

相关推荐

    clickhouse 熔断机制配置文件

    clickhouse 熔断机制配置文件

    spring cloud gateway配置Hystrix 熔断、限流、后台调用注意点.pdf

    Spring Cloud Gateway 配置 Hystrix 熔断、限流、后台调用注意点 Spring Cloud Gateway 是一种基于 Spring Boot 框架的 API 网关解决方案,提供了许多实用的功能来管理和保护微服务架构中的 API。其中,Hystrix ...

    详解Spring Cloud Feign 熔断配置的一些小坑

    Spring Cloud Feign 熔断配置详解 作为一名经验丰富的IT行业大师,我将详细解释Spring Cloud Feign 熔断配置中的一些小坑,并提供相应的解决方案。 一、Feign熔断配置报错 在使用Feign做服务调用时,使用继承的...

    禁用幽灵熔断补丁

    给打了微软幽灵熔断补丁导致电脑性能下降的用户的后悔药,可以关闭幽灵熔断,提高性能。对普通用户来说性能比这点安全更重要!

    c#:Ocelot熔断机制体验

    2. **配置Ocelot**:在`Ocelot.json`或你自定义的配置文件中,启用Polly策略,并指定熔断规则,如失败次数阈值、等待时间等。 3. **定义熔断策略**:使用Polly的`Policy.Handle()`定义哪些异常触发熔断,`...

    关闭幽灵熔断关闭幽灵熔断

    6. **安全配置**:调整系统和网络设置,如禁用不必要的内核模块,限制用户权限,以及加强防火墙规则,有助于提高安全性。 7. **监控和检测**:部署入侵检测系统(IDS)和入侵防御系统(IPS),以便及时发现和阻止...

    Hystrix 熔断、降级实例

    .andCommandPropertiesDefaults(HystrixCommandProperties.Setter() .withCircuitBreakerEnabled(true) .withCircuitBreakerErrorThresholdPercentage(50) .withExecutionTimeoutInMilliseconds(500))); } @...

    Apache Dubbo:Dubbo服务治理:服务熔断与超时重试

    这些配置项分别控制了服务熔断的核心参数,包括是否开启熔断、熔断超时时间、请求量阈值、半开状态等待时间和错误阈值等。 **代码示例:** 除了通过配置文件全局设置服务熔断策略外,Dubbo还支持在特定的服务调用...

    熔断电阻器,保险电阻

    熔断电阻器又称保险电阻,它是一种兼具电阻器和熔断器双重功能的元件。在电路正常工作时,熔断电阻器在额定功率下发出的热量与周围介质达到平衡,它具有电阻器的功能;当电路出现异常过载超过其额定功率时,它就会像...

    屏蔽CPU熔断补丁InSpectre.rar

    《全面解析:屏蔽CPU熔断补丁InSpectre及其应用》 在现代信息技术领域,安全始终是核心议题之一。近年来,CPU领域的两大安全漏洞——“熔断”(Meltdown)和“幽灵”(Spectre),引发了全球范围内的广泛关注。这两个...

    关闭并屏蔽幽灵 熔断补丁软件

    用于关闭影响cpu随机读取能力的安全补丁,分别为熔断和幽灵;注:补丁为安全补丁,是否屏蔽取决于自身需求,正常情况下不会感受到系统运行能力的差异

    自定义微服务熔断处理机制

    3. **Hystrix配置**:在微服务的配置文件中,如`application.yml`或`application.properties`,我们需要配置Hystrix的参数,包括命令(command)的超时时间、熔断器的阈值、回退策略等。 4. **自定义熔断逻辑**:...

    微服务架构(熔断机制及服务降级).pptx

    微服务架构熔断机制及服务降级方案 微服务架构是当前流行的软件架构模式,它将大型系统分拆成多个可插拔的小系统,每个小系统可以独立开发、测试、部署和维护,从而提高系统的灵活性和可扩展性。在微服务架构中,...

    微服务架构之限流熔断.pdf

    在微服务架构中,限流和熔断机制是保证系统稳定性的关键策略,尤其是在高并发场景下。本文档从高并发和高可用性的概念出发,详细阐述了在微服务架构中实施限流和熔断的必要性、常见指标以及实现方式。 首先,文档对...

    固定电阻器和熔断电阻器的检测方法

    ### 固定电阻器和熔断电阻器的检测方法 #### 固定电阻器的检测方法 固定电阻器是电子电路中最基本也是最重要的元件之一,它主要用于限制电流、分配电压等作用。正确检测固定电阻器的阻值对于保证电路正常工作至关...

    阿里熔断机制组件中文说明

    Sentinel是阿里巴巴开源的一款分布式系统的流量防卫兵,它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度帮助我们保护服务的稳定性。Sentinel诞生于2012年,最初的功能是入口流量控制。从2013年到...

    熔断电阻器的作用及选用

    根据电路的具体要求选择其阻值和功率等参数,既要保证它在过电流时能快速熔断,又要保证它在正常条件下,能长期稳定的工作。在更换此电阻时,与原来的电阻值和额定功率(瓦数)绝对要相同,电阻值及功率过大或过小,均...

    Eureka、feign熔断.zip

    总结来说,"Eureka、feign熔断.zip"这个压缩包文件很可能包含了使用Spring Cloud构建微服务的示例代码,其中涵盖了Eureka服务注册与发现、Feign声明式客户端和服务调用、以及Hystrix的熔断机制。通过学习和实践这些...

    Spectre幽灵、Meltdown熔断漏洞检测工具InSpectre Release 8

    《Spectre幽灵与Meltdown熔断漏洞:InSpectre Release 8深度解析》 在现代计算机安全领域,Spectre幽灵和Meltdown熔断漏洞是两个极具影响力的发现,它们对全球范围内的处理器安全性构成了重大威胁。这两类漏洞源自...

    avr单片机熔丝位配置

    avr单片机熔丝位配置的方法。对学习熔丝位很有用的。

Global site tag (gtag.js) - Google Analytics