分布式消息队列RocketMQ
3.8)消息堆积与消费延迟
3、 8.1)概念;
消息处理流程中,如果Consumer的消费速度跟不上Producer的发送速度,MQ中未处理的消息会越来越多(进的多出的少),这部分消息就被称为堆积消息,消息出现堆积进而会造成消息的消费延迟。
以下场景需要重点关注消息堆积和消费延迟问题:
1、 业务系统上下游能力不匹配造成的持续堆积,且无法自行恢复;
2、 业务系统对消息的消费实时性要求较高,即使是短暂的堆积造成的消费延迟也无法接受;
3、 8.2)产生原因分析;
Consumer使用长轮询Pull模式消费消息时,分为以下两个阶段:
3、 8.2.1)消息拉取;
Consumer通过长轮询Pull模式批量拉取的方式从服务端获取消息,将拉取到的消息缓存到本地缓冲队列中;
对于拉取式消费,在内网环境下会有很高的吞吐量,所以这一阶段一般不会成为消息堆积的瓶颈。
一个单线程单分区的低规格主机(Consumer,4C8G),其可达到几万的TPS。如果是多个分区多 个线程,则可以轻松达到几十万的T