【问题标题】:How are messages distributed in the kafka partition?消息在 kafka 分区中是如何分布的?
【发布时间】:2020-11-19 23:00:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: apache-kafka kafka-producer-api kafka-partition


    【解决方案1】:

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

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

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

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

    更多关于消息分区的信息请见here

    【讨论】:

      猜你喜欢
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多