1

如果我们在 Kafka 中有一个具有 4 个分区的主题。有 4 个发布者在同一主题中发布消息。

所有发布者发布不同数量的消息,例如发布者 1 发布 W 条消息,发布者 2 发布 X 条消息,发布者 3 发布 Y 条消息,发布者4 发布 Z 条消息。

每个分区中有多少条消息?

4

1 回答 1

0

除非您的生产者没有专门写入某些分区(通过在构造ProducerRecord时提供分区号),否则每个生产者生成的消息将(默认情况下)根据其键落在其中一个分区中。在内部使用以下逻辑:

kafka.common.utils.Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;

keyBytes你的密钥的字节表示在哪里,numPartitions在你的情况下是 4。如果您不使用任何密钥,它将以循环方式分发。

因此,如果不知道正在使用的密钥(如果根本使用密钥),就无法预测每个分区中有多少消息。

更多关于消息的划分在这里给出。

于 2020-11-19T13:13:37.903 回答