Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka Avro for Kafka如何使用模式注册表?_Apache Kafka_Avro_Confluent Schema Registry - Fatal编程技术网

Apache kafka Avro for Kafka如何使用模式注册表?

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对象的一部分提供 希望

我正在研究卡夫卡,作为一个初学者,我突然想到了以下问题

每次为Avro设计模式时,我们都会通过JAR从中创建Java对象

现在,我们使用该对象填充数据并从生产者发送数据

为了使用消息,我们在Consumer中再次生成对象。现在,在生产者和消费者两个位置生成的对象都包含一个字段
“public static final org.apache.avro.Schema Schema$”实际上将模式存储为字符串

如果是这样的话,为什么卡夫卡应该使用模式注册表呢?该模式已作为Avro对象的一部分提供


希望我的问题清楚。如果有人能回答我,那将是非常有帮助的。

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

架构注册表是存储发送到Kafka的所有记录的架构的存储库。因此,当卡夫卡制作人使用卡夫卡录像机发送一些记录时。记录的模式被提取并存储在模式注册表中,而Kafka中的实际记录只包含schema-id

在对记录进行反序列化时,使用者将获取模式id,并使用它从schema-registry获取实际模式。然后使用获取的模式对记录进行反序列化

所以简言之,Kafka并没有在每个记录中保留模式的副本,而是将其存储在模式注册表中,并通过schema-id引用

这有助于在存储记录的同时节省空间,还可以检测各种客户端之间的任何架构兼容性问题