我刚开始使用Kafka,我使用协议缓冲区作为消息格式,我只是学习模式注册。
为了给出一些上下文,我们是一个拥有十几个we服务的小组,我们使用Kafka在它们之间进行通信,并将所有模式和读/写模型存储在一个库中,这个库随后由每个服务导入。通过这种方式,他们知道序列化/反序列化消息。
但是现在模式注册表起作用了。为什么要用它?现在,我的基础设施变得更加复杂,而且每次更改模式时都需要更新它,我还需要在每个服务中定义读/写模型,就像现在使用库一样。
因此,从我的角度来看,我只看到了缺点,主要是使事情复杂化,所以为什么要使用模式注册中心呢?
谢谢
发布于 2022-07-21 18:07:37
模式注册中心确保您的消息不会偏离公共基础兼容性保证(模式的第一个版本)。
例如,您有一个描述像{"first_name": "Jane", "last_name": "Doe"}这样的事件的模式,但是后来决定名称实际上可以有两个以上的部分,因此您将转移到一个可以支持{"name": "Jane P. Doe"}的架构.您仍然需要一种使用first_name和last_name字段反序列化旧数据的方法,以便迁移到只有name的新模式。因此,消费者将需要两种模式。注册表将保存它并在生产者的每个有效负载中编码架构ID。毕竟,带有两个名称字段的初始事件对只有name的“未来”模式一无所知。
您说您的模型在跨服务的库中共享。那么,您可能有一些回归测试和发布周期来在服务之间发布这些?注册中心将允许您集中该逻辑。
https://stackoverflow.com/questions/73070141
复制相似问题