Zookeeper-Kafka 和一致性哈希

Zookeeper-Kafka and Consistent hashing

我正在学习 Zookeeper,我被困在中间,有些困惑。我浏览了各种论坛和问题,none 消除了我的困惑,最后来到 SO 以澄清以下事情。

  1. 据我了解,Zookeeper 在主从架构中工作。那么 Kafka 如何适应这种架构呢? Kafka 集群中的每个 Kafka 代理是否充当 Zookeeper 服务器整体的客户端,或者生成和使用消息的用户应用程序充当 Zookeeper 整体的客户端?

  2. 对于特定的 topic/partition 一个 Kafka 代理将参与其中,如果它收到大量消息(它无法处理),是否可以使用一致的散列和Zookeeper 架构如何支持这一点?

更新: Zookeeper 是否类似于 DynamoDB 中用于成员资格和故障检测的 Gossip 协议的变体

我建议阅读 Zookeeper documentation (specially the Overview section) 以阐明其主要概念及其工作原理。

  1. Kafka 代理充当 Zookeeper 客户端。他们连接到 Zookeeper 以读取和写入有关 Kafka 集群状态的数据。

    您可能会对 Zookeeper 是一个 leader/follower 系统感到困惑。在 Zookeeper 整体中,其中一个 Zookeeper 服务器充当领导者并有效地处理请求。追随者将请求转发给领导者。

  2. Kafka 消息未写入 Zookeeper。 Zookeeper 仅存储 topic/partitions 元数据(主题配置、副本和 ISR 列表)。 Kafka 代理将消息存储在它们的磁盘上。 Kafka 生产者在发送消息时决定分区(因此是代理)。默认分区程序可以使用 round-robin 在代理之间传播消息。

Zookeeper 使用自己的共识算法 (Zab)。您可以在 Zookeeper Wiki.

中找到它的描述