一、服务间调用流程
微服务互相调用过程中,为了防止某个微服务的故障消耗掉整个系统的连接资源,在服务调用过程中在调用方增加对被调用微服务的熔断逻辑——通过hystrix框架来实现。
二、Hystrix线程池相关配置
默认配置:
#核心线程数
hystrix.threadpool.default.coreSize:10
#最大队列长度,-1表示hystrix不会向队列中存放任务
hystrix.threadpool.default.maxQueueSize:-1
#排队线程数量阈值,超过将会拒绝请求
hystrix.threadpool.default.queueSizeRejectionThreshold:5
如果maxQueueSize为-1,则该选项不起作用
三、测试默认配置下的并发情况
调用方代码(消费者服务):
创建100个线程,通过channelFeignClient调用服务提供方,看是否回提示异常。
服务提供方代码(生产者服务):
测试结果:
100个线程,成功10次,其余抛出异常
结果分析:核心线程数的大小为10个,队列最大值为-1,因此,超多10个请求的其他90个请求全部被拒绝,走hystrix的回退逻辑。
四、测试修改配置后的并发情况
增大队列数和队列拒绝阈值
测试结果:
结果分析:全部成功