Kafka API - 如果 bootstrap.servers 属性设置为一系列已关闭的代理,但同一集群中存在其他代理



想象一下在生产者应用程序上的情况。

final Properties streamsConfiguration = new Properties();
streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-app");
streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "broker1:9092,broker2:9092");

如您所见,有 2 个 Kafka 经纪人。

现在,如果:

  1. 在未来的某个时间点,我必须通过再添加 2 个代理(代理 3 和 broker4(来扩展我的 Kafka 集群。
  2. 在未来的其他时间点,经纪人 1 和经纪人 2 因技术问题而下降。

经纪人 3 和经纪人 4 仍在运行。当它们在 Zookeeper 中运行时,其中一个将被设置为领导者,但我的应用程序不知道 broker3 或 broker4。

会发生什么?我的应用程序会停止工作吗? 如果是,我想有一个解决方案。会是什么?

根据生产者配置中有关bootstrap.servers的文档,列表中至少列出一个正在运行的代理就足够了。一个连接将能够建立与整个 Kafka 集群的连接。

当然,如果您只列出由于某种原因不存在/关闭的代理,那么您的应用程序将失败。

以下是文档的一部分:

用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,而不考虑此处指定了哪些服务器进行引导 - 此列表仅影响用于发现完整服务器集的初始主机。此列表应采用 host1:port1,host2:port2 的形式,....由于这些服务器仅用于初始连接以发现完整的群集成员身份(可能会动态更改(,因此此列表不需要包含完整的服务器集(但是,如果服务器关闭,您可能需要多个服务器(。

相关内容

  • 没有找到相关文章

最新更新