同一个Group的所有消费端实例,分区消费时间相差较大、滞后明显或乱序。

现象

云消息队列 Kafka 版控制台Group 管理页面,找到目标Group,在其操作列,选择更多 > 消费状态。在Group 详情消费状态页签,显示该Group订阅的所有Topic以及各个Topic的堆积量最近消费时间。某分区的最近消费时间比其他分区早,说明分区早于其他分区收到来自Producer的消息。

原因

同一个Group的所有消费端实例,会按分区均匀分配。在此条件下,消费的消息是否均匀,取决于客户的Producer在发送消息时,发送消息对各个分区是否均匀:

  • 如果消费端个数N可以整除24(默认分区个数),那么分区对消费端的分配就是均匀的。
  • 如果消费端个数N不能整除24(默认分区个数),那么有的消费端处理的分区个数会比其他消费端大。

    假设有5个消费端和24个分区,那么会有4个消费端每个消费5个分区,而余下的1个消费端只消费4个分区。消费的速度主要取决于消费端(您的客户端)的处理性能。如果处理性能完全一样,在此条件下分配到的分区个数多1的消费端,消费可能会稍慢。

解决方案

保证消费端个数N整除24。