Apache kafka Avro for Kafka如何使用模式注册表?
我正在研究卡夫卡,作为一个初学者,我突然想到了以下问题 每次为Avro设计模式时,我们都会通过JAR从中创建Java对象 现在,我们使用该对象填充数据并从生产者发送数据 为了使用消息,我们在Consumer中再次生成对象。现在,在生产者和消费者两个位置生成的对象都包含一个字段Apache kafka Avro for Kafka如何使用模式注册表?,apache-kafka,avro,confluent-schema-registry,Apache Kafka,Avro,Confluent Schema Registry,我正在研究卡夫卡,作为一个初学者,我突然想到了以下问题 每次为Avro设计模式时,我们都会通过JAR从中创建Java对象 现在,我们使用该对象填充数据并从生产者发送数据 为了使用消息,我们在Consumer中再次生成对象。现在,在生产者和消费者两个位置生成的对象都包含一个字段 “public static final org.apache.avro.Schema Schema$”实际上将模式存储为字符串 如果是这样的话,为什么卡夫卡应该使用模式注册表呢?该模式已作为Avro对象的一部分提供 希望
“public static final org.apache.avro.Schema Schema$”实际上将模式存储为字符串 如果是这样的话,为什么卡夫卡应该使用模式注册表呢?该模式已作为Avro对象的一部分提供
希望我的问题清楚。如果有人能回答我,那将是非常有帮助的。Schema registry是所有模式的中心repo,有助于在注册新模式时强制实施模式兼容性规则,没有它,模式演化将很困难。
基于配置的兼容性(向后、向前、完全等),架构注册表将限制添加不符合配置兼容性的新架构。架构注册表是存储发送到Kafka的所有记录的架构的存储库。因此,当卡夫卡制作人使用卡夫卡录像机发送一些记录时。记录的模式被提取并存储在模式注册表中,而Kafka中的实际记录只包含schema-id 在对记录进行反序列化时,使用者将获取模式id,并使用它从schema-registry获取实际模式。然后使用获取的模式对记录进行反序列化 所以简言之,Kafka并没有在每个记录中保留模式的副本,而是将其存储在模式注册表中,并通过schema-id引用 这有助于在存储记录的同时节省空间,还可以检测各种客户端之间的任何架构兼容性问题