gpt4 book ai didi

synchronization - Apache ZooKeeper:如何编写工作

转载 作者:行者123 更新时间:2023-12-03 11:56:21 24 4
gpt4 key购买 nike

Apache ZooKeeper是一种用于小型对象的高可用性数据存储。 ZooKeeper集群由一些节点组成,这些节点都将整个数据集保留在其内存中。该数据集称为“始终一致”,因此每个节点每次都具有相同的数据。

根据文档和blog posts,集群中的每个节点都可以应答读取并接受写入。

  • 读取始终由节点在本地答复,因此不涉及与集群的通信。
  • 将写入转发到指定的“Leader”节点,该节点将写入请求转发到所有节点并等待它们的答复。如果至少有一半节点回答,则认为写入成功。

  • 问题:领导者为什么等待一半的节点答复就足够了?如果有人连接到未收到更新的节点之一,则他将获得过时的结果(仅将本地读取为本地值)。

    最佳答案

    为了实现较高的读取可用性,Zookeeper保证了复制之间的弱一致性:读取始终可以由客户端节点回答,并且返回的答案可能是过时的值(即使通过领导者提交了新版本也是如此) )。

    然后,由于不是所有应用程序都需要最新信息,因此用户有责任确定读取的答案是否“过时”。因此提供了以下选择:

    1)如果您的应用程序不需要最新的读取值,则可以通过直接从客户端请求数据来获得较高的读取可用性。

    2)如果您的应用程序需要最新的读取值,则应在读取请求之前使用“同步” API将客户端版本与 bootstrap 同步。

    因此,结论是,Zookeeper提供了可自定义的一致性保证,用户可以决定可用性和一致性之间的平衡。

    如果您想了解有关Zookeeper内部的更多信息,建议您阅读本文:ZooKeeper: Wait-free coordination for Internet-scale systems。上述策略在第4.4节中进行了描述。

    关于synchronization - Apache ZooKeeper:如何编写工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5420087/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com