Protobuf 的 Kafka 模式注册表

Posted

技术标签:

【中文标题】Protobuf 的 Kafka 模式注册表【英文标题】:Kafka Schema Registry for Protobuff 【发布时间】:2021-11-27 09:27:07 【问题描述】:

生产者在发送消息时使用的模式如何登陆 kafka 模式注册表,因为生产者只会知道生成的 protobuff 消息的类。

另外,消费者如何使用模式注册表,模式在消费时除了检测不兼容之外将扮演什么角色。

据我了解,消费者已经在 protobuff 代码生成器创建的类的对象中接收消息

【问题讨论】:

【参考方案1】:

生成的类有一个获取其原型定义的方法(Message#getDescriptorForType())。当消息被序列化时,这个方法被调用,并且模式作为文本通过 HTTP 发送到注册表,并返回一个 ID。这个ID存储在Kafka记录中;实际的架构不是。

当消费者从 Kafka 收到字节数组时,它会找到 ID,向注册表发出 HTTP GET 请求,然后下载模式并使用它来反序列化消息的其余部分。

source code is available 让您更好地理解这一点。

【讨论】:

欢迎使用帖子旁边的复选标记接受答案

以上是关于Protobuf 的 Kafka 模式注册表的主要内容,如果未能解决你的问题,请参考以下文章

flink消费kafka protobuf格式数据

代理可能不可用错误 Kafka 模式注册表

使用 Spring-Kafka 和 Confluent 模式注册表将带有 JSON 模式的记录发送到 Kafka

使用带有kafka引擎的clickhouse进行融合模式注册表身份验证

没有模式注册表的 Kafka-connect

Kafka-connect 是不是必须使用模式注册表?