服务间调用流程:

微服务互相调用过程中,为了防止某个微服务的故障消耗掉整个系统的连接资源,在服务调用过程中在调用方增加对被调用微服务的熔断逻辑——通过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的回退逻辑。

测试修改配置后的并发情况:

增大队列数和队列拒绝阈值

测试结果:

结果分析:全部成功

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注