2

在生成/消费者消息时添加模式注册表的附加层(也称为故障点)有什么好处吗?如果服务出现故障,则不会使用或生成消息。使用 Kafka 的系统不会因为不使用 Schema Registry 而减少出错的可能性吗?

4

2 回答 2

5

在您的架构中拥有模式注册表的一个关键点是确保您的数据管道“即使在正常操作期间”也能端到端地工作。

也就是说,即使所有系统都启动并运行(“全绿色,100% 正常运行时间!”),A例如,由 team 管理的生产者应用程序可能会更新并开始生成不兼容的数据,从而对下游消费者造成附带损害由团队管理BC没想到会发生这种变化。

因此,当您决定是否使用模式注册表时,您不应该只问自己“当事情失败时”的场景(这很可能会在某个时候发生,这就是为什么例如 Confluent Schema Registry 支持诸如高可用性设置),而且还涉及数据管道正常工作所需的保证。

如果服务出现故障,则不会使用或生成消息。

一般来说,是的。在实践中,模式注册服务的高可用性模式、模式的客户端缓存等特性都有助于最大限度地减少任何此类损害。

使用 Kafka 的系统不会因为不使用 Schema Registry 而减少出错的可能性吗?

您是对的,一般来说,您希望避免引入会成为链中另一个故障点的组件。

也就是说,如果您在生产环境中运行数据管道——尤其是在大型组织中——模式注册表还可以通过确保始终可以读取写入的数据来帮助消除“故障点”。有人可能会争辩说,由“数据更改”引发的故障至少与一个或多个系统不可用引发的故障一样普遍。

于 2016-10-04T08:01:21.133 回答
3

架构注册表可以配置为高可用性,因此它不是单点故障。

也就是说,如果您想要模式注册表附带的便利性和模式兼容性规则,那么您想使用它。并非所有连接到 Kafka 集群的客户端都需要使用它,因此您可以尝试它而不会影响同一集群上的其他客户端。

将模式注册表用于 avro 消息的主要替代方法是将模式添加到消息本身。一些用户可以接受较大的消息大小,而不是系统地发展模式。模式注册表是为那些关心这些事情的人准备的。

于 2016-10-03T23:36:33.207 回答