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

Kar*_*raj 3 apache-kafka apache-zookeeper

我找不到节点和Zookeeper之间通信的任何细节.假设在Kafka节点中发生了更多垃圾收集,它会产生什么结果?

  1. Zookeeper会断开与各个节点的通信吗?
  2. 如果Zookeeper将断开相应的节点将会产生什么结果?

Gwe*_*ira 11

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

为了保持Kafka集群的一部分,每个代理必须定期向Zookeeper发送keep-alive.这是每个Zookeeper客户端默认执行的操作.如果代理每zookeeper.session.timeout.ms毫秒没有检测到Zookeeper (默认为6000),Zookeeper将认为代理已经死亡.这将导致在该代理上具有领导者的所有分区的领导者选举.如果这个经纪人碰巧是控制器,你也会看到一个新的控制器当选.

因此,如果垃圾收集暂停时间超过6000毫秒,您将看到代理与Zookeeper断开连接并导致一堆领导者选举.由于垃圾收集压力很少会导致一次长时间停顿,您可能会遇到我们称之为"扑动"的情况 - 经纪人将继续断开连接并重新连接到Zookeeper,许多领导者选举和大量ISR收缩/扩展事件.

反过来也是如此:如果你看到许多经纪人"拍打",GC日志是一个开始寻找的好地方.

  • 直接从马嘴里说出来:) (2认同)