代码之家  ›  专栏  ›  技术社区  ›  Karthikeyan Rasipalay Durairaj

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

  •  1
  • Karthikeyan Rasipalay Durairaj  · 技术社区  · 7 年前

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

    1. 如果Zookeeper将断开相应节点的连接,会产生什么结果?
    1 回复  |  直到 7 年前
        1
  •  16
  •   Gwen Shapira    7 年前

    ApacheKafka使用Zookeeper选择控制器、维护集群成员资格和存储配置,包括集群中的主题列表。

    为了保持Kafka集群的一部分,每个代理必须定期向Zookeeper发送keep alive。这是每个Zookeeper客户端在默认情况下都会做的事情。如果经纪人没有每周一次 zookeeper.session.timeout.ms 毫秒(默认为6000),Zookeeper将假定代理已死亡。这将导致在该代理上有一个leader的所有分区的leader选举。如果这个代理恰好是控制器,您还将看到一个新的控制器被选中。

    因此,如果垃圾收集暂停时间超过6000毫秒,您将看到代理与Zookeeper断开连接,并因此导致一系列领导人选举。由于垃圾收集压力很少只导致一次长时间的暂停,您可能会经历我们称之为“拍打”的情况—代理将不断断开并重新连接到Zookeeper、许多领导人选举和许多ISR收缩/扩展事件。

    反之亦然:如果你看到很多代理“拍打”,GC日志是一个开始寻找的好地方。