hystrix总结二

1、hystrix执行时的内部原理

在这里插入图片描述
注意点:超时后,也不可能终止掉一个调用严重延迟的依赖服务的线程的,只能说给你抛出来一个TimeoutException,但是还是可能会因为严重延迟的调用线程占满整个线程池。

2、两个command

HystrixCommand、HystrixObservableCommand

3、调用command的执行方法

execute(),queue(),observe(),toObservable()。
1)execute():调用后直接block,同步调用,直到依赖服务返回单条结果,或者抛出异常。
2)queue():返回一个Future,异步调用,后面可以通过Future获取单条结果。
3)observe():立即去执行construct方法,拿到多行的结果。
4)toObservable():返回一个Observable对象,后面对该对象调用subscribe方法去订阅
时才会触发底层的construct方法。

4、fallback降级机制场景

1)run()或construct()抛出一个异常
2)短路器发现异常占据一定的比例,直接开启短路。
3)线程池/队列/semaphore满了
4)command执行超时

5、fallback为空或者异常时的返回结果

1)对于execute(),直接抛出异常
2)对于queue(),返回一个Future,调用get()时抛出异常
3)对于observe(),返回一个Observable对象,但是调用subscribe()方法订阅它时,立即抛出调用者的onError方法
4)对于toObservable(),返回一个Observable对象,但是调用subscribe()方法订阅它时,立即抛出调用者的onError方法

6、请求缓存

在这里插入图片描述
注:一次请求、filter、请求上下文

两种最经典的降级机制

纯内存数据替代,默认值

降级本身的限流

fallback.isolation.semaphore.maxConcurrentRequests

这个参数设置了HystrixCommand.getFallback()最大的并发请求数量,默认是10,通过semaphore信号量的机制。如果超出了,直接被reject

HystrixCommandProperties.Setter()
   .withFallbackIsolationSemaphoreMaxConcurrentRequests(int value)

断路器的几个参数

1)短路器的流量超过了一定的阈值,才会考虑

circuitBreakerRequestVolumeThreshold

2)统计到的异常调用的占比阈值

circuitBreakerErrorThresholdPercentage

3)进入half-open的时间

circuitBreakerSleepWindowInMilliseconds

4)控制短路器是否允许工作,默认是true

circuitBreaker.enabled

5)时间窗口

requestVolumeThreshold

6)

errorThresholdPercentage

总结

1、线程池隔离,学术名称:bulkhead,舱壁隔离
2、semaphore隔离,底层网络调用延迟严重时,是无法timeout的,只能一直block住

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值