SCHEMA REGISTRY KAFKA:如何将其集成到Java项目中

时间:2018-07-31 09:18:53

标签: apache-kafka kafka-consumer-api kafka-producer-api spark-avro

经历了几次关于模式注册表的讲座并研究了它的工作原理之后,我比以前更加困惑。

我想了解如何在我的kafka项目中包括架构注册表,在本地我们有一些生产者和一些消费者,它们处理远程服务器的相应消费者/生产者。

如果我理解正确,那么生产者会将我的avroFile的schemaId(具有当前模式的版本)发布到模式注册表中,并在有效负载头中将schemaID上载到kafka队列中。

此后,使用者将从队列中读取具有相同schemaId(通过调用API?)的主题,并且该主题将被使用。

我理解正确吗? 您可以用图模式向我解释一下吗?

非常感谢。 斯特凡诺

1 个答案:

答案 0 :(得分:0)

总体流程如下所示: enter image description here 发送avro有效负载时,Kafka Producer首先在架构注册表中注册该架构(如果尚未存在)。然后,按顺序将魔术字节,模式ID(4个字节)和序列化的avro字节放入其中,以准备avro字节数组。下面给出了到达Kafka的实际有效负载的图表: enter image description here 消费者的工作恰恰相反。它验证魔术字节(到目前为止应该始终为零),获取架构ID,使用该ID从架构注册表中获取架构,最后使用该架构反序列化avro字节。我省略了序列化/反序列化部分,因为您的问题中没有提到它,并且在线上有很多资料。