我想了解更多关于我们用于我们的卡夫卡话题的avro架构,我对此相对较新。我想知道是否有办法在特定情况下演变架构。我们用一个新字段更新我们的模式不能为空或任何默认值,因为这些标识符都是这种类型。为此我们所做的工作是创建新的主题,但有没有更好的方法来演进现有的模式。谢谢。卡夫卡Avro架构演变
1
A
回答
1
有主题的四个可能的兼容性: - Forward
:等待着老版本的架构的客户端可以读取新版本 - Backward
:这等待模式的新版本的客户端可以读取旧版本 - Both
:以上 都 - None
:上面这些都不是
考虑,有一些次,其中一些生产商将生产新老数据,以及消费者将只准新的或旧的数据。
如何在你的情况下表现客户?
- 添加一个字段总是向前兼容(老客户刚落,新领域)
- 只有当你指定一个默认值
而且它是向下兼容的,这是唯一真正的,如果你正在计划将数据转换为特定模式(例如通过相应的POCO) - 如果您只是将其转换为json并进行自定义处理,则可以让新客户端处理两种模式。
所以我买两个possibe方式来wrte到同一个主题:
- 您设置的默认值。你可能会误解默认值,读书缺乏 这个字段(可选)实例时,这并不意味着默认值将被写入,但(报价Avro的规格)
此字段的默认值,使用
例如,如果你以前有“名”,并要添加“姓”,你可以 集“姓”默认为“NC”(或空),你可能已经在做一个数据库。
- 您可以设置您的兼容性默认为
none
(或forward
),这样就可以更新您的模式(因为默认情况下,comptibiliaty是backward
)。在这种情况下,等待新模式的客户端将无法处理旧数据。但是,如果您只处理传入数据(更改兼容性,更新所有生产者(以便只有新数据将到达),那么您的客户端正在等待新模式 - 记住要将兼容性设置回落或兼容性确实适合您的使用要
我会选择1
相关问题
- 1. 卡夫卡架构演变
- 2. 卡夫卡:多经纪人架构
- 3. 无法读取卡夫卡 - Avro Schema消息
- 4. 发行存储AVRO卡夫卡流于文件系统
- 5. 春季开机卡夫卡骆驼Avro消费者
- 6. 卡夫卡的Avro控制台制片快速启动失败
- 7. 从卡夫卡消费者检索架构而不使用架构注册表
- 8. 卡夫卡
- 9. UnknownCodecException卡夫卡
- 10. 无法构造卡夫卡生产者
- 11. 卡夫卡设置与码头构成
- 12. Pyspark多卡夫卡流覆盖变量
- 13. 卡夫卡与斯卡拉
- 14. 卡夫卡领导人选举造成卡夫卡流崩溃
- 15. 卡夫卡的retention.ms没有被卡夫卡0.10.2强制执行?
- 16. 如何从卡夫卡用卡夫卡流通过间隔
- 17. 卡夫卡连接或卡夫卡客户
- 18. 卡夫卡流和卡夫卡表一对多关系加入
- 19. 卡夫卡:如何在卡夫卡实现循环分区
- 20. 春季卡夫卡表现vs本地卡夫卡api
- 21. 生产和消费卡夫卡Avro邮件没有汇合组件
- 22. 使反应卡夫卡与合流模式注册的Avro模式
- 23. 卡夫卡的Avro反序列化问题(java.lang.NoSuchMethodException:java.util.UUID中<init>(java.lang.String中)
- 24. 我应该使用什么:卡夫卡流或卡夫卡消费者API或卡夫卡连接
- 25. 运行卡夫卡与连接器的Avro:ConfigException:“缺少架构注册表URL”
- 26. 卡夫卡0.9.1授权
- 27. Logstash如何比卡夫卡
- 28. 卡夫卡喷口集成
- 29. 从卡夫卡导入HBase
- 30. 卡夫卡 - 爪哇 - 从crashs
去。如果新字段不能为空,不能有一个默认值,你会想与所有不包含旧的记录做那么什么这个领域?你想让他们演变成新的模式吗? –
是的,但是我很好奇,是否有工作来解决这个问题而不创建新的主题。 –