第 7 章 在 Java 客户端中使用序列化器/反序列化器验证 Kafka 信息


Service Registry 为使用 Java 编写的 Kafka 生成者和消费者应用程序提供客户端序列化器/反序列化器(SerDes)。Kafka producer 应用程序使用序列化器来对符合特定事件模式的信息进行编码。Kafka 消费者应用程序使用 deserializers 来验证消息是否根据特定的模式 ID 使用正确的模式来序列化消息。这样可确保一致的架构使用,并有助于防止运行时出现数据错误。

本章解释了如何在生成者和消费者客户端应用程序中使用 Kafka 客户端 SerDe :

先决条件

7.1. Kafka 客户端应用程序和 Service Registry

Service Registry 将模式管理与客户端应用程序配置分离。您可以通过在客户端代码中指定 URL 来启用 Java 客户端应用程序使用来自 Service Registry 的 schema。

您可以在 Service Registry 中存储模式以序列化和反序列化消息,这些消息从客户端应用程序引用,以确保它们发送和接收的消息与这些模式兼容。Kafka 客户端应用程序可以在运行时从 Service Registry 中推送或拉取其模式。

模式可以演进,您可以在 Service Registry 中定义规则,例如,确保架构更改有效,且不会破坏应用程序使用的早期版本。Service Registry 通过将修改的模式与以前的模式进行比较来检查兼容性。

Service Registry 模式技术

Service Registry 为 schema 技术提供模式 registry 支持,例如:

  • Avro
  • protobuf
  • JSON 架构

客户端应用程序可通过 Service Registry 提供的 Kafka 客户端序列化器(SerDes)服务使用这些模式技术。Service Registry 提供的 SerDes 类的成熟度和使用可能会有所不同。以下章节提供有关每个 schema 类型的更多详情。

producer 模式配置

制作者客户端应用程序使用序列化器将它发送到特定代理主题的消息放在正确的数据格式中。

启用制作者以使用 Service Registry 进行序列化:

注册 schema 后,当启动 Kafka 和 Service Registry 时,您可以访问 schema 来格式化由制作者发送到 Kafka 代理主题的信息。或者,根据配置,生成者可以在第一次使用时自动注册 schema。

如果 schema 已存在,您可以根据 Service Registry 中定义的兼容性规则,使用 registry REST API 创建新版本。版本用于兼容性检查,作为 schema 的演进。组 ID、工件 ID 和 version 代表用于标识 schema 的唯一元组。

consumer 模式配置

消费者客户端应用程序使用反序列化器将来自特定代理主题的消息获取到正确的数据格式。

启用消费者使用 Service Registry 进行反序列化:

使用全局 ID 检索模式

默认情况下,架构通过使用全局 ID (在被消耗的消息中指定)从 Service Registry 检索。架构全局 ID 可以位于消息标头或消息有效负载中,具体取决于制作者应用的配置。

当在消息有效负载中查找全局 ID 时,数据格式以 magic 字节开头,用作消费者的信号,后跟全局 ID,以及消息数据正常。例如:

# ...
[MAGIC_BYTE]
[GLOBAL_ID]
[MESSAGE DATA]
Copy to Clipboard Toggle word wrap

然后,当启动 Kafka 和 Service Registry 时,您可以访问模式来格式化从 Kafka 代理主题接收的消息。

使用内容 ID 检索模式

或者,您可以将 配置为根据内容 ID 从 Service Registry 检索模式,这是工件内容的唯一 ID。全局 ID 是工件版本的唯一 ID。

内容 ID 不唯一标识版本,而是仅唯一标识版本内容。如果多个版本共享相同的内容,它们具有不同的全局 ID,但具有相同的内容 ID。confluent Schema Registry 默认使用内容 ID。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat