【问题标题】:How Kafka guarantee the messages order while we increase the partitions in runtime?当我们在运行时增加分区时,Kafka 如何保证消息的顺序?
【发布时间】:2021-01-13 16:07:13
【问题描述】:

我是 kafka 的新手,当我阅读 Kafka 文档时,我意识到使用相同 key 提供的消息将被映射到同一个分区以保证顺序。这完全有道理。但是,我想知道如果我们在运行时增加主题分区的数量,具有相同键的新消息是否会像以前一样散列到同一个分区(旧的)?

如果是这样,如果所有消息都提供了键,那么它们都不会映射到新分区怎么办?这对我来说没有意义。

如果不是,那么Kafka如何保证具有相同键的消息的顺序?

【问题讨论】:

    标签: apache-kafka kafka-topic kafka-partition


    【解决方案1】:

    我想知道如果我们在运行时增加主题分区的数量,具有相同键的新消息是否会像以前一样散列到同一个分区(旧的)?

    不,新消息将根据新的分区数进行分区。旧消息不会被重新分区。

    如果不是,那么Kafka如何保证具有相同键的消息的顺序?

    更改分区数时无法保证。当在运行时增加(或减少)分区数量时,排序可以或更好地改变。

    因此,如果您依赖数据的排序,则不建议更改已包含数据的主题的分区。你能做的是

    • 在让生产者向其发送数据之前,将现有数据复制到具有新分区数的新主题中。
    • 在您的生产者中应用自定义分区程序,该分区程序根据键将消息发送到固定分区,并且仅将“新键”发送到新分区。

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 2020-03-04
      • 2023-04-07
      • 2022-01-23
      • 2017-07-24
      • 2018-07-05
      • 1970-01-01
      • 2017-06-19
      • 2016-06-12
      相关资源
      最近更新 更多