avro for kafka如何使用schema registry?

xxb16uws  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(1063)

我正在研究Kafka,作为一个初学者,下面的问题突然出现在我的脑海中。
每次为avro设计模式时,我们都会通过jar从中创建java对象。
现在我们使用这个对象来填充数据并从producer发送数据。
为了使用消息,我们在consumer中再次生成对象。现在,在producer和consumer两个位置生成的对象都包含一个字段
“public static final org.apache.avro.schema$”实际将架构存储为字符串。
如果是这样,那么Kafka为什么要使用模式注册表呢?架构已经作为avro对象的一部分可用。
希望我的问题清楚。如果有人能回答我,那会很有帮助的。

lo8azlld

lo8azlld1#

schema registry是存储所有发送给kafka的记录的schema的存储库。所以当Kafka制作人用Kafka夫罗塞利泽发送一些唱片时。记录的模式被提取并存储在schema registry中,而kafka中的实际记录只包含schema-id。
在反序列化记录时,使用者获取模式id,并使用它从schema-registry获取实际的模式。然后使用获取的模式对记录进行反序列化。
所以简言之,kafka并不是在每个记录中都保存一个schema的副本,而是存储在schema注册表中,并通过schema-id引用。
这有助于在存储记录的同时节省空间,还可以检测各种客户机之间的任何模式兼容性问题。
https://docs.confluent.io/current/schema-registry/docs/serializer-formatter.html

0sgqnhkj

0sgqnhkj2#

schema registry是所有模式的中心repo,有助于在注册新模式时强制实施模式兼容性规则,否则模式演化将很困难。基于配置的兼容性(向后、向前、完全等),架构注册表将限制添加不符合配置兼容性的新架构。

相关问题