Spring Cloud Hyxtrix 初探

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。

参考

  1. hystrix线程池隔离的原理与验证
  2. Hystrix信号量模式支持超时时间吗

你可能感兴趣的:(Spring Cloud Hyxtrix 初探)