【发布时间】:2020-11-19 23:00:20
【问题描述】:
如果我们在 Kafka 中有一个具有 4 个分区的主题。同一主题有 4 个发布者发布消息。
所有发布者发布不同数量的消息,例如发布者1发布W条消息,发布者2发布X条消息,发布者3发布Y条消息,发布者4发布Z条消息。
每个分区中有多少条消息?
【问题讨论】:
标签: apache-kafka kafka-producer-api kafka-partition
如果我们在 Kafka 中有一个具有 4 个分区的主题。同一主题有 4 个发布者发布消息。
所有发布者发布不同数量的消息,例如发布者1发布W条消息,发布者2发布X条消息,发布者3发布Y条消息,发布者4发布Z条消息。
每个分区中有多少条消息?
【问题讨论】:
标签: apache-kafka kafka-producer-api kafka-partition
除非您的生产者没有专门写入某些分区(通过在构造 ProducerRecord 时提供分区号),否则每个生产者生成的消息将 - 默认情况下 - 根据其密钥进入其中一个分区。在内部使用以下逻辑:
kafka.common.utils.Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
keyBytes 是您的密钥的字节表示,numPartitions 在您的情况下是 4。如果您不使用任何密钥,它将以循环方式分发。
因此,如果不知道正在使用的密钥(如果根本使用密钥),就无法预测每个分区中有多少消息。
更多关于消息分区的信息请见here。
【讨论】: