性能优化二(设备指令下发)

为什么这个叫性能优化二?因为之前有做过一次优化了,并且遇到了一些坑

对应的地址是

[SpringBoot AMQP线程池的坑, 坑三](https://www.cnblogs.com/lesenlin/p/15072960.html)

业务问题:反馈设备指令下发(如:开门指令)到设备需要等待20S,设备才开门

比如 上午10.20.00用户在APP上点击开门,但是10.20.25 设备才开门,排查日志确实是10.20.25下发的数据

这个项目我刚接手,对于代码来说,基本上一点都不熟悉,但是不熟悉也没办法,干吧

原设备消费详细流转图:

img

补充,下发指令用到了rabbitMQ的消息的最高优先级

可以看出来导致下发需要20S的原因是因为他是消费数据之后同步等待了返回然后进行自动ACK的,在设备量大的情况下,指令只在单队列高优先级是没办法保证及时消费的,因为订阅的是所有在线设备的队列

第一期优化,监听队列从原来的10线程 * 4台服务器 修改为60线程 * 4台服务器 2021.07.30 已完成

第二期优化,同步阻塞等待改成异步ACK,保存通道列表缓存

重构之后设备消费详细流转图:

img

可以看出来,进行重构之后,异步可以处理所有设备队列指令

posted @ 2021-10-19 09:42  随风森林  阅读(154)  评论(0)    收藏  举报