【问题标题】:When does a distributed system need ZooKeeper分布式系统什么时候需要 ZooKeeper
【发布时间】:2015-04-16 14:37:15
【问题描述】:

为什么像 Solr 或 Kafka 这样的分布式系统需要 ZooKeeper,而像 Cassandra 这样的分布式系统却不需要?

【问题讨论】:

    标签: solr cassandra apache-zookeeper


    【解决方案1】:

    ZooKeeper 为关键系统状态提供高度一致的存储。许多系统,例如Storm 和 Kafka 依赖 ZooKeeper 进行服务发现和领导者选举。因为 ZooKeeper 的 ZAB 协议属于 CAP 定理的 CP 端,所以可以保证两个客户端不会看到同一个系统的不同视图。因此,例如,Kafka 不会错误地认为节点 A 和节点 C 都是同一分区的领导者。

    这些系统只使用 ZooKeeper,因为它是一种经过良好测试和验证的技术,可用于存储此类关键元数据。 ZooKeeper 充当协调的中心点。然而,Cassandra 具有更加去中心化的架构,并实现了自己的共识算法(Paxos),而不是依赖于像 ZooKeeper 这样的外部 CP 存储。根据 Cassandra 如何使用其八卦和共识协议,它可能会简单地做出一些 Kafka 和 Solr 等系统不会做出的让步。这使得 Cassandra 无需依赖于 ZooKeeper 等外部系统,后者通常比 HA 系统可以容忍更少的故障。

    【讨论】:

    • zookeeper 中的动态重新配置如何更好地支持分布式系统? Kafka 和 Solr 是否可以从 zookeeper 3.5.x 中添加的 zookeeper 的这个功能中受益?
    【解决方案2】:

    需要 Zookeeper 的系统依赖它来进行集群协调。 Cassandra 架构不同,因为它是一个点对点系统。因此,协调是“分布”在每个节点之间的。

    【讨论】:

      【解决方案3】:

      在 Kafka 中,主题的消费者在 ZooKeeper 中注册自己,以便相互协调,平衡数据的消耗。 消费者还可以通过设置 offsets.storage=zookeeper 将他们的偏移量存储在 ZooKeeper 中。

      Solr 嵌入并使用 Zookeeper 作为集群配置和协调的存储库 - 将其视为包含所有 Solr 服务器信息的分布式文件系统。

      除此之外,zookeeper 还用于许多其他系统,例如 Hadoop Highavailabilty、HBase。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-13
        相关资源
        最近更新 更多