1. 添加starter
  2. 添加@EnableCircuitBreaker
  3. @HystrixCommand

    注解方式使用Hystrix

    1. 熔断

    2. fallback降级

    3. 舱壁模式

    image.png
    CodeRepo/UseHystrixCommandAnnotation.java at main · 4rnold/CodeRepo

    编码方式使用Hystrix

    定义HystrixCommand【使用线程池隔离】,HystrixObservableCommand【使用信号量隔离】
    CodeRepo/NacosClientHystrixCommand.java at main · 4rnold/CodeRepo
    使用HystrixCommand
    四种方式

  4. 同步阻塞,execute()

  5. 异步非阻塞,queue()
  6. 热响应调用(启动线程没有执行),observe()
  7. 冷响应调用,toObservable()

CodeRepo/HystrixController.java at main · 4rnold/CodeRepo

Hystrix缓存

Hystrix - 图3

排除Exception

@HystrixCommand(fallbackMethod = “error”, ignoreExceptions = ArithmeticException.class)

Hystrix合并请求

image.png
代码方式的请求合并:
CodeRepo/NacosClientCollapseCommand.java at main · 4rnold/CodeRepo

queueSizeRejectionThreshold

  1. hystrix:
  2. threadpool:
  3. default:
  4. coreSize: 200 #并发执行的最大线程数,默认10
  5. maxQueueSize: 1000 #BlockingQueue的最大队列数,默认值-1
  6. queueSizeRejectionThreshold: 800 #即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝,默认值5

hystrix提供了queueSizeRejectionThreshold属性(hystrix.threadpool.default.queueSizeRejectionThreshold)来动态控制线程池队列的上限,而线程池本身队列的大小,则是由maxQueueSize属性(hystrix.threadpool.default.maxQueueSize)来决定,默认为-1,创建的队列是SynchronousQueue,如果设置大于0则根据其大小创建LinkedBlockingQueue

Hystrix监控配置

Feign整合Hystrix

Feign