有没有办法配置合流模式注册表和/或kafka流以防止模式演化?
动机
我们有多个kafka流作业为同一主题生成消息。所有作业都应使用相同的模式发送消息,但由于作业配置错误,有些作业发送的消息中缺少字段。这给下游带来了问题,也是我们要防止的。
当这种情况发生时,我们可以在schema注册表中看到预期的模式演变。
解决方案
我们检查了文档中的汇合模式注册表和/或kafka流,但找不到阻止模式演化的方法。
因此,我们考虑修改kafka streams作业,以便在发送模式之前从合流模式注册表读取模式。如果接收到的模式与消息的本地模式匹配,那么我们只发送它们。
这是正确的选择还是我们错过了更好的选择?
更新:我们在medium上找到一篇文章,用于在发送之前根据schema注册表验证schema。
1条答案
按热度按时间mnemlml81#
这取决于您使用哪种语言和库以及它们提供什么样的api。如果要发布通用记录,则可以读取和解析
.avdl
或者.avsc
文件到记录类型并生成事件。这意味着,如果您试图构建的事件与当前模式不兼容,您甚至无法构建该事件,因此无法修改现有模式。所以在本例中,只需在源代码中存储一个静态模式。对于特定的记录,它或多或少是相同的,您可以基于该模式构建java/c或其他语言类,您可以构建它们,然后简单地将它们新建并发布。有什么意义吗?)ps.我为Kafka使用了c#libs,也许其他一些语言没有这种支持,或者有其他更好的选择