使用 avro 进行 kafka 模式管理为我们提供了向后兼容性的灵活性,但是我们如何处理模式中的重大更改?
假设生产者A向消费者C发布消息M
假设消息 M 的方案发生了重大变化(例如,名称字段现在分为名字和姓氏),并且我们有新的方案 M-New
现在我们正在部署生产者A-New和消费者C-New
问题是,在我们的部署过程完成之前,我们可以让生产者 A-new 发布消息 M-new,而消费者 C(旧的)将收到 M-new,因此我们可能会丢失消息。
因此,做到这一点的唯一方法是同步新生产者和消费者的部署,这会增加大量开销
有什么建议如何处理吗?
一个简单的方法是为您的主题保留较长的保留期。然后,您只需为重大更改创建一个新主题。所有消费者都可以在保留期内转移到新主题而不会丢失消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)