hystrix扩容、限流、熔断

1.hystrix自动扩容与缩容

1)coreSize
设置线程池的大小,默认是10。
2)maximumSize
设置线程池的最大大小,只有在设置allowMaximumSizeToDivergeFromCoreSize的时候才能生效,默认是10。
3)keepAliveTimeMinutes
设置保持存活的时间,单位是分钟,默认是1。设置了一个线程多长时间空闲之后,就会被释放掉。
4)allowMaximumSizeToDivergeFromCoreSize
允许线程池大小自动动态调整,设置为true之后,maxSize就生效了。

2.timeout超时控制

确保大量的请求不会hang住过长的时间,比如设置为100ms,那到了100ms直接就报timeout,走fallback降级。超时控制不推荐用默认值,hystrix dashboard上可以看到,TP90 TP95 TP99。

3.熔断策略

(1)circuitBreaker.requestVolumeThreshold
滑动窗口中(10秒内),最少要有多少个请求时,才触发开启短路。应该根据平时的访问流量去设置,而不是用默认值。比如,QPS 100,10秒的滑动窗口就是1000(设置成800、600也行)。
(2)circuitBreaker.errorThresholdPercentage
设置异常请求量的百分比,异常请求达到这个比例时,就会触发。如果是针对redis集群,集群崩溃,那基本上所有请求,都会异常,这时就可设置得高一点,如60%,70%。金融支付类的接口,这个比例就会设置的很低,因为对异常系统必须要很敏感,可能10%异常,就直接短路了。很重要的接口,必须很稳定,不能容忍任何的延迟或者是报错。
(3)circuitBreaker.sleepWindowInMilliseconds
短路后多长时间,会进入holf-open状态,默认值是5000毫秒。如果针对redis集群崩溃了,会在5s内就直接恢复吗?这个时间可以长一些,比如1分钟。

4.hystrix限流

1)线程池
内部做了异步化处理,可以处理超时。用来做有网络访问的资源隔离。
2)semaphore信号量
让tomcat线程执行运行逻辑,没有内部异步化处理,一旦超时,会导致tomcat线程hang住了。用来做纯内存的限流,如推荐、搜索等服务内部的较复杂算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值