【问题标题】:Kafka Topic, Partitioning and Topic Log CompactionKafka 主题、分区和主题日志压缩
【发布时间】:2021-06-12 02:04:39
【问题描述】:

我是卡夫卡的新手。我有一个关于如何划分主题的问题。

我有 Kafka 主题并计划在其中包含 2 个分区。我有两个操作 - 项目创建/更新和项目验证。

项目创建/更新操作很长,需要时间才能完成。 Project Validate 运行速度更快,预计能快速返回结果。

我计划有 2 个不同的键 - 一个用于创建/更新操作,一个用于验证操作,这样每个操作都会转到单独的分区并最终由消费者组中的一个消费者监听以获取性能。

我开始了解 kafka 压缩,其中记录被压缩以防它们具有相同的密钥。这导致我的初始方法出现问题,因为所有项目创建/更新事件的密钥都是相同的,即使它们用于不同的项目。

如果我更改密钥以包含项目标识符,则不能保证所有项目创建事件都在单个分区中,这间接意味着验证操作可能必须等待长时间运行的创建操作完成。

如何设计我的分区键?

【问题讨论】:

    标签: apache-kafka partitioning


    【解决方案1】:

    首先,您不需要将主题设置为压缩主题,由您决定该选项是否与您的用例相关,它可以使用 cleanup.policy 主题参数进行配置,其次是两个像您在同一主题上建议的用例不是最佳的,如果您事先知道,您可能会更轻松地设置两个主题,已经说过您可以实现 PartitionAssignor 来决定将每个密钥发送到哪里,请注意默认分配器不会向你保证这两个键会去不同的分区,它只是保证所有具有相同键的记录都会去同一个分区,没有保证每个键会去不同的分区。

    希望有道理,如果需要进一步解释,请发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多