1. Hyxtrix 作用
- 熔断
- 降级
- 限流
- 超时
2. Hyxtrix 实现模式
1) 线程池
模式采用这种实现,线程池隔离采用的是自己独立的线程池替代Web容器的线程池,来自己实现服务的熔断、限流、超时。
2) 信号量
信号量隔离采用的Web容器的线程池,自己本身相当于一个计数器,可以用来限流。
3. Hyxtrix 限流实现
- 线程池,可以通过线程数+队列大小限制
hystrix.threadpool.default.coreSize
hystrix.threadpool.default.maxQueueSize
hystrix.threadpool.default.queueSizeRejectionThreshold
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
- 信号量,可以设置最大并发请求数
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests
4. Hyxtrix 超时实现
- 线程池 本身支持超时,future.get(timeout)就可以了
- 信号量 采用HystrixTime去监测任务
Hystrix在任务启动时会启动另外一个线程HystrixTime去监测任务。如果在TimeOut时间内,任务未完成,对于线程池模式,会把执行任务的线程设置为中断;对于信号量模式,Hystrix不会对执行任务的线程做任何操作。然后再使用HystrixTime线程去执行fallback逻辑。
5. Hyxtrix 降级
就是实现fallback逻辑。
6. Hyxtrix 熔断
1.当满足一定的阈值的时候(默认10秒内超过20个请求次数)
2.当失败率达到一定的时候(默认10秒内超过50%的请求失败)
3.到达以上阈值,断路器将会开启
4.当开启的时候,所有请求都不会进行转发
5.一段时间后(默认是5秒),这个时候断路器是半开状态,会让其中一个请求进行转发。如果成功,断路器会关闭,若失败,继续开启。重复4和5。
网友评论