Kafka 代理是否存储元数据?

Ama*_*man 3 apache-kafka

Kafka 代理是否存储生产者 API 使用的元数据(例如哪些分区是某个主题的领导者等)?据我了解,此元数据存储在 Zookeeper 中,是否正确?如果这是真的,那么 Zookeeper 如何更新 Brokers 的最新信息?

小智 6

所有 Kafka 代理都可以回答描述集群当前状态的元数据请求:有哪些主题、这些主题具有哪些分区、哪个代理是这些分区的领导者等。

ZooKeeper 负责:

  • 选择控制经纪人 - 并确保只有一个
  • 集群成员资格 - 允许代理加入集群
  • 主题配置 - 存在哪些主题、每个主题有多少个分区、副本在哪里、谁是首选领导者、为每个主题设置了哪些配置覆盖
  • 配额 - 每个客户端允许读取和写入多少数据
  • ACL - 谁可以读取和写入哪个主题

Kafka 和 ZooKeeper 之间存在定期通信,以便 ZooKeeper 知道 Kafka 代理仍然存在(ZooKeeper 心跳机制),并且还响应诸如正在创建主题或主题分区的副本不同步等事件。