Apache kafka 消息是如何在kafka分区中分发的?

Apache kafka 消息是如何在kafka分区中分发的?,apache-kafka,kafka-producer-api,kafka-partition,Apache Kafka,Kafka Producer Api,Kafka Partition,如果我们在Kafka中有一个主题有4个分区。有4个发布者在同一主题中发布消息 所有发布者发布不同数量的消息,如发布者1发布W消息、发布者2发布X消息、发布者3发布Y消息和发布者4发布Z消息 每个分区中有多少条消息?除非您的生产者没有明确地写入某些分区(通过在构造分区时提供分区号),否则每个生产者生成的消息默认情况下将根据其密钥进入其中一个分区。内部使用以下逻辑: kafka.common.utils.Utils.toPositive(Utils.murmur2(keyBytes)) % numP

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

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


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

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

kafka.common.utils.Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
其中,
keyBytes
是密钥的字节表示形式,
numPartitions
是4。如果您没有使用任何密钥,它将以循环方式分发

因此,在不知道正在使用的键(如果使用了键)的情况下,不可能预测每个分区中有多少条消息


提供了有关消息分区的更多信息。

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

kafka.common.utils.Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
其中,
keyBytes
是密钥的字节表示形式,
numPartitions
是4。如果您没有使用任何密钥,它将以循环方式分发

因此,在不知道正在使用的键(如果使用了键)的情况下,不可能预测每个分区中有多少条消息

给出了关于消息分区的更多信息