zookeper 如何与 kafka 交谈以了解 kafka 已启动

how zookeper talk with kafka to know kafka is up

我们有 3 台 kafka 机器和 3 台 zookeper 服务器

虽然 kafka 机器不与 zookeper 服务器共同托管(kafka 在不同的机器上,OS 是 redhat 版本 7.x)

为了获取代理 ID,我们在 zookeper 服务器上执行以下操作

cd /usr/hdp/current/zookeeper-server/bin

./zkCli.sh

ls /brokers/ids

结果应该是三个经纪人的 id 为

1011  1012  1013

我的问题是 - zookeper 以何种方式知道代理已启动?

或者更具体地说

执行哪个 cli zookeper 以识别 kafka 代理已启动?

Zookeeper 基本上是一个分布式键值存储。启动时,Kafka 代理连接到 Zookeeper(使用 zookeeper.connect 设置)并在 /brokers/ids 下创建一个具有自己的 broker.id 的 znode(键值对)。 Kafka 经纪人然后在 运行.

时保持与 Zookeeper 的连接

znode 创建为 "Ephemeral"(这是 Zookeeper 的一个特性)。这意味着如果代理断开连接,Zookeeper 将删除它。

这样,Zookeeper 随时知道哪些 broker 是存活的(这并不一定意味着 broker 是健康的!)。代理使用它来发现集群中的其他代理。