【问题标题】:Batching in KafkaKafka 中的批处理
【发布时间】:2021-07-06 05:29:19
【问题描述】:

Kafka 批处理中的所有消息都必须转到同一个分区吗?

或者是否可以将消息(应该去不同的分区)一起批量处理?

【问题讨论】:

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


    【解决方案1】:

    这取决于生产者的分区分配算法。 默认为 RoundRobin,因此它将在分区之间平均分配。

    您可以为批处理中的每条记录传递一个键,然后将为每个键执行一个默认的哈希函数,代理将把记录放在哈希函数返回的分区中。

    你也可以重写散列函数,自己写一个。

    否则,如果您的 Kafka 客户端支持,您可以为每个记录显式传递分区。

    但您不必按分区对消息进行分组 - 只需按主题。

    【讨论】:

    • 是的。所以实际上我正在使用“sarama”(go library)来发送消息。我为每条消息传递一个密钥,因此分区是根据密钥上的哈希值决定的。现在我想知道,我是否应该只批量处理应该发送到同一个分区的消息。就像在 kafka 方面是强制性的,我必须批量处理应该去同一个分区的消息,或者我可以简单地批量处理消息而不关心它。 (在我的用例中,我需要根据部分消息内容将消息发送到特定分区,基本上我设置为key)
    • 没有。这根本不是必须的。批量处理一个主题的所有消息,而不用担心分区,Kafka 会正确处理它。
    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    相关资源
    最近更新 更多