为什么使用模式注册表

问题描述 投票:0回答:1

我刚刚开始使用 Kafka,我使用 Protocol Buffers 作为消息格式,并且我刚刚了解了模式注册表。

为了提供一些背景信息,我们是一个拥有十几个 Web 服务的小团队,我们使用 Kafka 在它们之间进行通信,并将所有模式和读/写模型存储在一个库中,稍后由每个服务导入。这样他们就知道如何序列化/反序列化消息。

但是现在架构注册表开始发挥作用。为什么要使用它?现在我的基础设施变得更加复杂,每次更改模式时我都需要更新它,并且我还需要在每个服务中定义读/写模型,就像我现在使用库一样。

因此,从我的角度来看,我只看到缺点,主要是让事情变得复杂,所以为什么我应该使用模式注册表?

谢谢

apache-kafka protocol-buffers confluent-schema-registry
1个回答
2
投票

Kafka 仅接受字节,它不能保证您的记录具有任何特定的数据集。

架构注册表允许您定义具有基本兼容性保证的消息(架构的第一个版本)。

例如,您有一个描述像

{"first_name": "Jane", "last_name": "Doe"}
这样的事件的模式,但后来决定名称实际上可以包含超过 2 个部分,因此您然后转移到可以支持
{"name": "Jane P. Doe"}
的模式...您仍然需要一种使用 first_name
last_name
字段反序列化
旧数据
以迁移到仅具有
name
的新模式的方法。因此,消费者将需要“两种”模式。注册表将保存该信息并在来自生产者的每个有效负载中对架构 ID 进行编码。毕竟,具有两个名称字段的初始事件对仅具有 name 的“未来”模式一无所知。
您说您的模型在跨服务的库中共享。然后,您可能需要一些回归测试和发布周期来在服务之间发布这些内容?注册表将允许您集中该逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.