【发布时间】:2018-07-01 15:15:10
【问题描述】:
所以有一个 Kafka 集群,我们在它上面有一个 Schema 注册表来验证主题的模式。由于某些维护原因,如果模式注册表关闭,Kafka 将在这段时间内停机,并且不会接受任何新的传入数据请求?
【问题讨论】:
标签: apache-kafka confluent-platform confluent-schema-registry
所以有一个 Kafka 集群,我们在它上面有一个 Schema 注册表来验证主题的模式。由于某些维护原因,如果模式注册表关闭,Kafka 将在这段时间内停机,并且不会接受任何新的传入数据请求?
【问题讨论】:
标签: apache-kafka confluent-platform confluent-schema-registry
Kafka 消费者和生产者在内部缓存他们从模式注册表中检索到的模式。只有在发送/接收之前没有看到任何架构的记录时,才会联系架构注册表。
因此,只要您不启动任何新的消费者/生产者或发送带有以前未发送过的模式的记录,您应该没问题。
尽管对此持保留态度,但我已经查看了代码并使用控制台消费者和生产者运行了一个快速测试,并且在杀死模式注册表后仍然可以生产和消费,但可能存在它仍然存在的情况失败。
更新:
今天我突然想到,我可能回答你的问题太字面了,而不是试图理解你想要做什么:)
如果您想在架构注册表上启用维护窗口,可能值得考虑并行运行两个或多个架构注册表并在您的生产者和消费者中配置它们。 其中一个将被选为 master,并且模式的写入请求将被转发到该实例。这样,您可以在需要维护时段时执行滚动重启。
【讨论】:
KafkaAvroSerializer 和反序列化器维护一个模式 ID 缓存。
因此,只要没有新的生产者和消费者上线,您就不会看到任何错误。
如果注册表关闭,Kafka 不会停机,但您会开始在客户端中看到网络异常错误,因为它们使用 HTTP 与注册表通信,而 Kafka 使用自己的 TCP 协议
【讨论】: