1

所以有一个 Kafka 集群,我们在它上面有一个 Schema 注册表来验证主题的模式。出于某种维护原因,如果模式注册表关闭,Kafka 将在这段时间内停机,并且它不会接受任何新的传入数据请求?

4

2 回答 2

1

Kafka 消费者和生产者在内部缓存他们从模式注册表中检索到的模式。仅当发送/接收之前未看到任何模式的记录时,才会联系模式注册表。

因此,只要您不启动任何新的消费者/生产者或发送带有以前未发送的模式的记录,您应该没问题。

尽管如此,我已经查看了代码并使用控制台消费者和生产者运行了一个快速测试,并且在杀死模式注册表后仍然可以生产和消费,但可能存在它仍然失败的情况。

更新:

今天我突然想到,我可能回答你的问题太字面了,而不是试图理解你想要做什么:)

如果您想在模式注册表上启用维护窗口,可能值得考虑并行运行两个或多个模式注册表并在您的生产者和消费者中配置它们。其中一个将被选为 master,并且模式的写入请求将被转发到该实例。这样,如果您需要维护窗口,您可以执行滚动重启。

于 2018-01-24T19:55:50.307 回答
0

KafkaAvroSerializer反序列化器维护一个模式 ID 缓存。

因此,只要没有新的生产者和消费者上线,您就不会看到任何错误。

如果注册表关闭,Kafka 将不会停机,但是您将开始在客户端中看到网络异常错误,因为它们使用 HTTP 与注册表通信,而 Kafka 使用自己的 TCP 协议

于 2018-09-01T21:04:38.913 回答