【问题标题】:Kafka Topic Message VersioningKafka 主题消息版本控制
【发布时间】:2021-09-28 18:24:05
【问题描述】:

我以订阅者可以理解的格式向 kafka 主题 (outputTopic) 发布消息。我现在希望以一种会破坏现有主题消费者的方式修改这些消息的格式。

例如,我发布对象,以 json 格式序列化,但需要更改对象,因此需要更改架构。

管理此类变更的最佳方法是什么?我应该更改生产者以使其发布到新主题(outputTopic2)吗?有没有更好的方法来管理这个?

【问题讨论】:

  • 不同的模式通常需要一个单独的主题,但无论哪种方式,Kafka 仍然会接受消息。如果您不想编辑任何消费者代码,则需要这样做
  • Kafka 中存在的旧版本的历史事件对未来的需求很重要?
  • 理论上,如果您可以确保支持新模型的消费者从可预测的分区消费,那么您可以将带有新模型的消息路由到这些分区。不过,您需要小心不要弄乱负载平衡。也许路由到消费者群体会有所帮助。

标签: json apache-kafka


【解决方案1】:

根据我的说法,一种干净的方法是使用Schema registry / Apache Avro。根据您的使用方式,它将帮助您保证向后/向前兼容性。

【讨论】:

    【解决方案2】:

    Avro 模式不能解决问题。无论是否存在架构,您都可以更新消费者以处理旧版本和新版本。

    相反,让您的制作人保持原样。部署从同一数据源读取数据并将数据发布到具有新更新格式的新主题的更新版本。

    允许消费者在最终杀死旧版本之前从旧版本迁移到新版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      相关资源
      最近更新 更多