Kafka bootstrap.servers 配置值作为代理的子集

Kafka bootstrap.servers config value as subset of brokers

对于 kafka bootstrap.servers 配置,应该提供所有代理详细信息。

如果不是,kafka producer/consumer 将如何解析所有可用的代理?

如果是,添加节点后producer/consumer是否需要重启?

bootstrap.servers 配置对于生产者和消费者是强制性的,并且它必须至少有一个代理 host:port 以允许 producer/consumer 连接到集群然后获取所有其他元数据(主题在哪里,谁是领导者等等)。

如果你添加一个节点,你不需要重新启动producer/consumer但是当前的配置当然会过时。我是说 ... 如果您有一个包含 broker1 和 broker2 的集群,并将它们放入 bootstrap.servers 配置中,然后 producer/consumer 连接到该集群。 假设您添加了 broker3 并且在那里部署了一些新的 topics/partitions。您的 producer/consumer 将能够 write/read to/from 这些新的 topics/partitions 因为有关它们的信息(因此它们在 broker3 上)将通过向 broker1 或 broker2 询问元数据而可用。

当然,如果您关闭 broker1 和 broker2,并且您的集群将仅由 broker3 组成,则您将不得不使用仅包含 broker3 的 bootstrap.servers 配置重新启动 producer/consumer。

bootstrap.servers配置只是(顾名思义)启动时使用的配置;那么每个客户端都可以直接连接到代理(对于 reading/writing topic/partitions),即使这样的代理不在 bootstrap.servers 配置中。