方案概述

Kafka将Topic划分为多个分区,消息被分布式存储在分区中。同一个消费组内,一个消费者可同时消费多个分区,但一个分区在同一时刻只能被一个消费者消费。

在消息处理过程中,如果客户端的消费速度跟不上服务端的发送速度,未处理的消息会越来越多,这部分消息就被称为堆积消息。消息没有被及时消费就会产生消息堆积,从而会造成消息消费延迟。

消息堆积原因

导致消息堆积的常见原因如下:

生产者短时间内生产大量消息到Topic,消费者无法及时消费。

消费者的消费能力不足(消费者并发低、消息处理时间长),导致消费效率低于生产效率。

消费者异常(如消费者故障、消费者网络异常等)导致无法消费消息。

Topic分区设置不合理,或新增分区无消费者消费。

Topic频繁重分配导致消费效率降低。