是否有一种方法可以配置 Confluent Schema Registry 和/或 Kafka Streams 以防止架构演变?
我们有多个Kafka Streams作业为同一主题生成消息。所有作业都应使用相同的模式发送消息,但是由于作业配置错误,已经发生了其中一些发送字段丢失的消息。这已导致下游问题,这是我们要防止的事情。
发生这种情况时,我们可以在架构注册表中看到预期的架构演变。
我们检查了 Confluent Schema Registry 和/或 Kafka Streams 的文档,但找不到阻止模式演变的方法。
因此,我们考虑在发送前修改Kafka Streams作业以从Confluent Schema Registry中读取架构。如果收到的架构与邮件的本地架构匹配,则只有我们发送它们。
这是正确的方法吗?还是我们错过了更好的选择?
更新:我们发现了一个article on medium,用于在发送之前根据模式注册表对模式进行验证。
答案 0 :(得分:0)
这取决于您使用哪种语言和库以及它们提供哪种API。如果要发布通用记录,则可以将.avdl
或.avsc
文件读取并解析为 record 类型并构建事件。这意味着,如果您尝试构建的事件与当前架构不兼容,则您甚至无法构建该事件,因此将无法修改现有架构。因此,在这种情况下,只需在源代码中存储静态模式即可。对于特定的记录,它或多或少是相同的,您可以基于模式构建Java / C#或其他语言的类,然后构建它们,然后简单地将其新建并发布。有什么意义吗?)
PS。我在Kafka的C#库中工作,也许其他一些语言不支持该语言,或者还有其他更好的选择