容错限流Hystrix + Dashboard

使用容错限流的原因

        使用微服务架构时由于服务间依赖严重并且复杂,如果某个被频繁调用的单个系统出现相应延迟,用户在不明原因的情况下拿不到返回值,便会不断的重试,导致本来已经不堪重负的服务器被最后一根稻草压垮,出现高峰期的雪崩效应。

        除了延迟这一应用稳定性杀手之外,架构搭建时还应该考虑凡是依赖都可能会失败、凡是资源(CPU/Memory/Threads/Queue)都有限制、网络也并不可靠。为了防止服务的整体崩塌,应当采用适当的容错限流机制来预防。   

 

容错模式

基本:

1. 主动超时

2. 服务降级

3. 隔离不同的依赖调用

4. 限流(限制最大并发数)

5. 错误数达到阈值时熔断

其他:

断路器模式:

舱壁隔离模式:

 

熔断限流流程

Netflix Hystrix 设计原理

Hystrix工作流程(自适应反馈机)

 

断路器内核:

 

隔离方式:

信号量vs线程池隔离

 

信号量隔离优点

• 轻量,无额外开销 • 不足

• 不支持任务排队和主动超时

• 不支持异步调用

信号量隔离适用

• 受信客户

• 高扇出(网关)

•高频高速调用(cache)

 

线程池隔离优点

• 支持排队和超时

• 支持异步调用 • 不足

• 线程调用会产生额外的开销

线程池隔离适用

• 不受信客户

• 有限扇出


Hystrix主要配置项

配置项(前缀hystrix.command.*.)

含义

execution.isolation.strategy

线程“THREAD”或信号量“SEMAPHORE”隔离(Default: THREAD)

execution.isolation.thread.timeoutInMilliseconds

run()方法执行超时时间(Default: 1000)

execution.isolation.semaphore.maxConcurrentRequests

信号量隔离最大并发数(Default:10)

circuitBreaker.errorThresholdPercentage

熔断的错误百分比阀值(Default:50)

circuitBreaker.requestVolumeThreshold

断路器生效必须满足的流量阀值(Default:20)

circuitBreaker.sleepWindowInMilliseconds

熔断后重置断路器的时间间隔(Default:5000)

circuitBreaker.forceOpen

设true表示强制熔断器进入打开状态(Default: false)

circuitBreaker.forceClosed

设true表示强制熔断器进入关闭状态(Default: false)

配置项(前缀hystrix.threadpool.*.)

含义

coreSize

使用线程池时的最大并发请求(Default: 10)

maxQueueSize

最大LinkedBlockingQueue大小,-1表示用SynchronousQueue(Default:-1)

default.queueSizeRejectionThreshold

队列大小阀值,超过则拒绝(Default:5)

 

Hystrix Dashboard

参考文章

Netflix Hystrix:https://github.com/Netflix/Hystrix

防雪崩利器:熔断器Hystrix的原理与使用https://segmentfault.com/a/1190000005988895

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值