分区分配的消费端不均。

现象

消息队列Kafka版控制台的Consumer Group页签,单击查看消息堆积,显示某分区的最近消费时间比其他分区早,说明分区先收到来自Producer的消息。

原因

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

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

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

解决方案

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