外部化 bootstrap 个服务器配置

Externalize bootstrap servers configuration

假设我们要使用 confluent-kafka-dotnet,ProducerConfig 在其 BootstrapServers 属性 中获取一组 Kafka 代理地址。

我们可以将这些地址放在 web.config 中,但假设我们使用的是微服务架构,如果我们要更改 Kafka 集群配置(例如添加新代理),我们必须更新很多 web.config 个文件。

我很好奇其他人是如何解决这个问题的。

您可以存储来自任何存储环境的 kafka 详细信息。 如果您在 bootstrap 上启动生产者,则您需要做的就是针对特定环境更改此商店详细信息并重新启动服务器,否则可以跳过此步骤。

我们正在保管库中。

http://127.0.0.1:8200/v1/secret/production/kafka { host1:9091,host2:9091 } http://127.0.0.1:8200/v1/secret/staging/kafka { host:9091 }

与其从配置文件中读取,不如从环境变量中读取,例如 BOOTSTRAP_SERVER

如果您向现有集群添加了一个新代理,那么您不必担心更改任何内容,只要您的初始配置至少列出了 3 个其他健康的代理 - 其余将是 bootstrapped 由控制器,并返回给客户端,因此得名 属性。您可能需要反弹应用程序以获得新的引导程序,或者您可以调整 metadata.max.age.ms 的值以更快地重新强制刷新。

如评论中所述,Consul 在动态服务发现方面很受欢迎,因此您只需为 kafka.consul 输入一个条目,并通过 DNS 获取在 [= 下注册的任何健康服务13=]