Kafka 分区中的消息分布不均

Pac*_*ist 6 apache-kafka kafka-producer-api

我有一个有 10 个分区的主题,1 个消费者组有 4 个消费者,工作人员大小为 3。

我可以看到分区中的消息分布不均匀,一个分区有很多数据,另一个是免费的。

如何让我的生产者将负载平均分配到所有分区,以便所有分区都得到正确利用?

tom*_*kab 11

根据 DefaultPartitioner 类本身的 JavaDoc 注释,默认的分区策略是:

  • 如果记录中指定了分区,则使用它。
  • 如果未指定分区但存在键,则根据键的散列选择一个分区。
  • 如果不存在分区或键,请以循环方式选择一个分区。

https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/producer/internals/DefaultPartitioner.java

因此,这里有两个可能导致分布不均的原因,具体取决于您在生成消息时是否指定了密钥: