我们正在以Kafka和Protocol Buffers作为数据格式启动新项目。
看起来Confluent提供的序列化器/反序列化器假定使用Schema-Registy,但是由于我的团队每次模型更改都要发布新的jar,所以有任何理由使用注册中心吗?
我已经阅读了多篇文章和源代码,但仍然无法真正理解为什么在已经有模型的情况下使用模式注册中心。当您没有得到带有类或任何其他用例的jar时,情况是这样吗?如果能在实践中有这样的例子,那就太好了。
发布于 2022-06-20 02:28:55
即使您有模型类,也可能需要架构注册表。更重要的是进行模式演变,这样任何模式更改都不会破坏现有的使用者/生产者。
还有一个建议,无论您使用模式注册中心,我建议在生产者和使用者中使用模式(json/avro/protbuf)来生成模型类,而不是添加为lib。您可以获得模式,并在构建步骤(maven/gradle)中包含一个插件来生成这些类。始终将模式作为所有讨论的真相来源,即使您正在使用模式注册中心或不使用Kafka env。
模式注册的另一个巨大优点是它将减少有线和Kafka broker日志上的有效负载的大小。不需要发送整个模式+主体,我们只需发送模式Id + body,它就会在使用者中被解密。这将提高性能。
从操作的角度来看,模式注册可以作为模式的单一真相来源。缺点是,您还有一个需要处理的组件。
因此,这取决于您的业务需求,您需要打一个基于正负的电话。但是,在代码中只包含模式以生成构建上的模型类,而不是在源代码回购/依赖于其他团队中提交。
请检查https://docs.confluent.io/platform/current/schema-registry/index.html https://docs.confluent.io/platform/current/schema-registry/avro.html
https://stackoverflow.com/questions/72678885
复制相似问题