Zookeeper-Kafka和一致性哈希

3

我正在学习Zookeeper,但遇到了一些困惑。我查阅了各种论坛和问题,但都没有解决我的疑惑。最终我来到SO寻求以下问题的答案:

  1. 据我理解,Zookeeper工作在主从架构中。那么Kafka如何适应这种架构?每个Kafka集群中的代理是否作为客户端连接到Zookeeper服务器集合,或者生产和消费消息的用户应用程序作为Zookeeper集合的客户端?

  2. 对于一个特定的topic/partition,一个Kafka代理会被占用,如果它接收到太多的消息(无法处理),是否有可能使用一致性哈希来分配负载,Zookeeper架构支持这种操作吗?

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

1个回答

4

我建议查看Zookeeper文档(特别是概述部分),以澄清其主要概念和工作原理。

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

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

  2. Kafka消息不会写入Zookeeper。 Zookeeper仅存储主题/分区元数据(主题配置,副本和ISR列表)。 Kafka代理程序将消息存储在其磁盘上。 Kafka生产者在发送消息时决定分区(因此也决定了经纪人)。 默认分区器可以使用循环法将消息分散在代理程序之间。

Zookeeper使用自己的共识算法(Zab)。 您可以在Zookeeper Wiki中找到它的描述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接