Hystrix基础

什么是Hystrix?

在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败雪崩,这个就是Hystrix需要做的事情。

hystrix功能
  • 隔离(线程池隔离和信号量隔离):限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。
  • 优雅的降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。
  • 熔断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。
  • 缓存:提供了请求缓存、请求合并实现。
  • 支持实时监控、报警、控制(修改配置)
隔离

在这里插入图片描述

线程池隔离信号量隔离
线程与调用线程非相同线程与调用线程相同
开销排队、调度、上下文开销等无线程切换,开销低
异步支持不支持(无法削峰)
并发支持支持(最大线程池大小)支持(最大信号量上限)
熔断

正常状态下,电路处于闭合状态(Closed),如果调用持续出错或者超时,电路被打开进入熔断状态(Open),后续一段时间内的所有调用都会被拒绝(Fail Fast),一段时间以后,保护器会尝试进入半熔断状态(Half-Open),允许少量请求进来尝试,如果调用仍然失败,则回到熔断状态,如果调用成功,则回到电路闭合状态;
在这里插入图片描述

降级

降级需要对下层依赖的业务分级,把产生故障的丢了,换一个轻量级的方案,是一种退而求其次的方法。
通常降级有:1.如果服务失败,则我们通过fallback进行降级,返回静态值。2.采用服务级联的模式,如果第一个服务失败,则调用备用服务,例如失败重试或者访问缓存失败再去取数据库。

hystrix应用

在这里插入图片描述
参数说明

参数类型参数名默认值说明
command配置executionIsolationStrategyExecutionIsolationStrategy.THREAD信号隔离或线程隔离,默认:采用线程隔离,
executionIsolationThreadTimeoutInMillisecond1s隔离时间大,即多长时间后进行重试
executionIsolationSemaphoreMaxConcurrentRequests10使用信号量隔离时,命令调用最大的并发数,默认:10
fallbackIsolationSemaphoreMaxConcurrentRequests10使用信号量隔离时,命令fallback(降级)调用最大的并发数,默认:10
fallbackEnabledtrue是否开启fallback降级策略
executionIsolationThreadInterruptOnTimeouttrue使用线程隔离时,是否对命令执行超时的线程调用中断(Thread.interrupt())操作
metricsRollingStatisticalWindowInMilliseconds10000ms统计滚动的时间窗口,默认:10s
metricsRollingStatisticalWindowBuckets10统计窗口的Buckets的数量,默认:10个
metricsRollingPercentileEnabledtrue是否开启监控统计功能,默认:true
requestLogEnabledtrue是否开启请求日志
requestCacheEnabledtrue是否开启请求缓存
熔断器配置circuitBreakerRequestVolumeThreshold20主要用在小流量
circuitBreakerSleepWindowInMilliseconds5000ms熔断器默认工作时间,默认:5秒.熔断器中断请求5秒后会进入半打开状态,放部分流量过去重试
circuitBreakerEnabledtrue是否启用熔断器,默认true. 启动
circuitBreakerErrorThresholdPercentage50默认:50%。当出错率超过50%后熔断器启动
circuitBreakerForceOpenfalse是否强制开启熔断器阻断所有请求,默认:false,不开启
circuitBreakerForceClosedfalse是否允许熔断器忽略错误,默认false, 不开启
线程池配置HystrixThreadPoolProperties.Setter().withCoreSize(int value)10配置线程池大小,默认值10个
HystrixThreadPoolProperties.Setter().withMaxQueueSize(int value)-1配置线程值等待队列长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值