【发布时间】:2019-10-19 07:02:26
【问题描述】:
使用 avro 的 kafka 模式管理为我们提供了向后兼容的灵活性,但我们如何处理方案中的重大更改?
假设生产者A向消费者C发布消息M
假设消息 M 的方案发生了重大变化(例如,名称字段现在分为名字和姓氏),我们有新的方案 M-New
现在我们正在部署生产者 A-New 和消费者 C-New
问题是,在我们的部署过程完成之前,我们可以让生产者 A-new 发布消息 M-new,而消费者 C(旧的)将收到 M-new,因此我们可能会丢失消息。
因此,这样做的唯一方法是同步新生产者和消费者的部署,这会增加大量开销
任何建议如何处理?
【问题讨论】:
-
您在使用模式注册表吗?默认情况下,它不允许非向后兼容的破坏性更改。如果您对主题有重大更改,您可以将所有消费者移动到最新的偏移量(例如最新架构)或新主题
标签: java apache-kafka avro