如果我们在 Kafka 中有一个具有 4 个分区的主题。有 4 个发布者在同一主题中发布消息。
所有发布者发布不同数量的消息,例如发布者 1 发布 W 条消息,发布者 2 发布 X 条消息,发布者 3 发布 Y 条消息,发布者4 发布 Z 条消息。
每个分区中有多少条消息?
如果我们在 Kafka 中有一个具有 4 个分区的主题。有 4 个发布者在同一主题中发布消息。
所有发布者发布不同数量的消息,例如发布者 1 发布 W 条消息,发布者 2 发布 X 条消息,发布者 3 发布 Y 条消息,发布者4 发布 Z 条消息。
每个分区中有多少条消息?
除非您的生产者没有专门写入某些分区(通过在构造ProducerRecord时提供分区号),否则每个生产者生成的消息将(默认情况下)根据其键落在其中一个分区中。在内部使用以下逻辑:
kafka.common.utils.Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
keyBytes
你的密钥的字节表示在哪里,numPartitions
在你的情况下是 4。如果您不使用任何密钥,它将以循环方式分发。
因此,如果不知道正在使用的密钥(如果根本使用密钥),就无法预测每个分区中有多少消息。
更多关于消息的划分在这里给出。