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住了。用来做纯内存的限流,如推荐、搜索等服务内部的较复杂算法。

发布了104 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zjuwzp/article/details/102213998