当 brokers 列表中的第一个 broker 宕机时创建 Producer

问题描述

我有一个用于消费和生产的多节点 Kafka 集群。

在我的应用程序中,我使用 confluent-kafka-go(1.6.1) 创建生产者和消费者。当我生成和使用消息时,一切都很好。 这就是我配置引导服务器列表的方式

"bootstrap.servers":"localhost:9092,localhost:9093,localhost:9094"

但是当我开始在 bootstrap.servers 中给出代理的 IP 地址并且如果第一个代理关闭的那一刻,似乎生产者反复失败创建告诉

Failed to initialize Producer ID: Local: Timed out

如果我删除了故障节点的 IP,生产和消费消息就会起作用。 如果在我创建生产者/消费者后代理关闭,它们可以通过切换到其他节点继续使用。

我应该如何配置 bootstrap.servers 以便使用可用节点创建生产者?

解决方法

无论如何你都不应该在同一台机器上运行 3 个代理,但是当第一个服务器宕机时,使用多个 唯一 服务器对我来说效果很好(如果需要,集群会选举一个不同的领导者) to),所以听起来你要么失去了主题分区的主要领导者,要么失去了控制器。在生产者上启用退休应该能够自我修复(通过为分区领导者提出新的元数据请求)

总的来说,它只是一个 CSV;没有其他方法可以配置该属性本身。您可以在仅解析健康节点的代理前放置一个反向代理,但这样您就会与潜在的 DNS 缓存发生冲突