首页 > 解决方案 > Kafka 存储的 avro 记录向后模式兼容性

问题描述

有关 Avro 向后兼容性和 RocksDB 本地存储的问题:

假设我将一个主题作为一个具体化到rocksdb存储中的全局表来使用。然后我可以执行 store.get(K) 来检索 V。现在,假设我必须重新部署我的流应用程序,保持相同的本地存储,但使用新版本的 K 的 Avro 模式,只需包含一个新的可选字段。如果我现在使用新版本的 Avro 使用序列化的 K 进行查找(假设新的可选字段设置为 null),我是否应该期望仍然能够从本地存储中检索在 K 的第一个版本下已经持久化的 V?

我的印象是这应该有效,但查找总是返回 null。我可以通过遍历存储来打印前 K,V 的列表,并且我可以看到持久化的 K 看起来与我在执行 store.get(K) 时使用的完全一样。虽然 Avro 是为了向后兼容,但我们在更改架构时必须删除并重新创建存储是否正常?

标签: avroapache-kafka-streamsrocksdb

解决方案


推荐阅读