Kafka 节点和 zookeeper 将如何相互通信?

How Kafka Nodes and zookeeper will communicate with each other?

我找不到有关 Nodes 和 Zookeeper 之间通信的任何详细信息。认为 更多垃圾收集在 Kafka 节点中发生,结果会是什么?

  1. Zookeeper 会断开与相应节点的通信吗?
  2. 如果 Zookeeper 将断开相应节点的连接,结果会是什么?

Apache Kafka 使用 Zookeeper 作为 select 控制器,以维护集群成员资格并存储配置,包括集群中的主题列表。

为了保留在 Kafka 集群中,每个代理必须定期向 Zookeeper 发送保持活动状态。这是每个 Zookeeper 客户端默认执行的操作。如果 broker 没有每隔 zookeeper.session.timeout.ms 毫秒(默认为 6000)对 Zookeeper 进行心跳,Zookeeper 将假定 broker 已死。这将导致在该代理上拥有领导者的所有分区的领导者选举。如果这个经纪人恰好是控制器,你也会看到一个新的控制器被选举出来。

因此,如果垃圾收集暂停时间超过 6000 毫秒,您将看到 broker 与 Zookeeper 断开连接,并因此导致一堆领导者选举。由于垃圾收集压力很少导致一次长时间停顿,您可能会遇到我们所说的 "flapping" - 代理将不断断开连接并重新连接到 Zookeeper,大量领导选举和大量 ISR shrink/expand 事件。

反之亦然:如果您看到很多代理 "flapping",GC 日志是开始查找的好地方。