如果我们在Kafka中使用schema registry,是否要求每个生产者在每次将记录发送到代理时都发送当前版本的Kafka?
如果是,这额外的开销是什么意思,因为我们已经在每个avro文件中发送模式?
如果没有,请对我的问题的愚蠢感到遗憾,并请帮助我更好地理解模式注册表。
是否要求每个制作人每次发送记录到经纪人时都发送当前版本的Kafka
假设你指的是Avro模式的版本,那么不,序列化器和注册表在场景后面处理它。架构本身被转换为JSON并发布到注册表,在注册表中进行散列、存储,然后返回增量ID。
序列化程序获取此ID后,Avro消息的剩余字节数组将发送给Kafka。
使用者反序列化程序必须读取此ID,查找注册表,然后使用注册表返回的模式读取Avro字节。您可以通过将模式与使用者一起存储来覆盖此行为(类似于使用Protobuf或JSON所需的方式)
这额外的开销是什么意思,因为我们已经在每个avro文件中发送模式?
汇合序列化程序在Kafka消息中不包含模式,只有一个4位整数id,可以在注册表中任何给定id的GET/schemas/ids/:id
中找到该id
使用注册表会有很大的不同吗
这是一个复杂的问题;)与向主题发送随机值字符串相比,我认为是这样。默认情况下,注册表强制使用新使用者通过兼容性检查读取主题中的所有架构。
如果您使用JSON或字符串,那么有人可以发送{“hello”:“world”}
,后面跟着数字2
,如果您的消费者想要一个JSON对象,它会立即中断
我现在一直在查看Spring Cloud模式注册表和汇合模式注册表。我可以看到一些区别,例如Spring Cloud模式注册表将模式保存在普通数据库中,默认情况下保存在h2中,而汇合模式注册表保存在kafka主题中。 spring云模式注册表的这种方法是否会对性能产生任何影响。据我所知,即使数据保留在主题上,以防汇合,查询它时仍然会有延迟。但会有重大影响吗? 我还可以看到,spring云模式注册表
我正在尝试使用Confluent schema registry,下面是我在Github中找到的一些示例(https://github.com/gAmUssA/springboot-kafka-avro). 当消费者和生产者与模型共享相同的命名空间而不是其工作时。 当使用者位于具有不同名称空间但具有相同类(名称和属性方面)的不同项目中时,它不工作。 合流Avro反序列化程序可以使用正确的值反序列化
我正在了解Confluent的模式注册表,以满足所有模式管理需求。 我不太理解他们的版本控制方法...有一个的概念,我将其视为一个名称空间。据我所知,subject在模式注册表中必须是唯一。 然后是模式id,或者只是,它也是唯一的。 最后,还有一个。 以下是文档中的片段: :此主题的架构版本,每个主题从1开始 :全局唯一的架构版本id,在所有主题中的所有架构中都是唯一的 因此,一旦我想修改特定主题
我正试图使用SpringKafka为我的生产者应用程序及其嵌入式Kafka服务器编写测试。 然而,我的应用程序也使用合流模式注册表,我想知道SpringKafka是否为模式注册表提供了一些嵌入式服务器? 或者有没有更好的方法来使用模式注册表进行Spring Kafka测试?
我在不同的机器上运行具有不同的相同kafka代理集群的两个模式注册表。 该实例没有任何问题,运行良好。但是当我试图在DEV上创建一个新模式时,问题就开始了,它会转到QA。所以 是否不可能为同一个代理集群运行两个不同的模式注册表? 谢谢
我有一个Kafka主题,我想用AVRO数据(目前是JSON)来填充它。我知道“正确”的方法是使用模式注册表,但出于测试目的,我想让它在没有它的情况下工作。 因此,我将AVRO数据作为数组[字节]发送,而不是常规的Json对象: 模式是在每个数据中启动的;我如何使它与kafka-connect一起工作?kafka-connect配置目前表现出以下属性(数据作为json.gz文件写入s3),我想编写P