zoukankan      html  css  js  c++  java
  • 5. 监视和ZooKeeper操作

    ZooKeeper中的写入(write)操作是原子性和持久性的。 写入到大多数ZooKeeper服务器上的持久性存储中,可以保证写操作成功。 无论如何,ZooKeeper的最终一致性模型允许读取(read)ZooKeeper服务的最新状态,并且同步(sync)操作允许客户端更新ZooKeeper服务的最新状态。

    znode中的读取(read)操作(如existsgetChildrengetData)允许在其上设置监视。 另一方面,由znode的写入(write)操作触发的监视(如createdeletesetData ACL操作)并不会有监控的参与。

    以下是在znode状态更改期间可能发生的监视事件的类型:

    • NodeChildrenChanged: 一个znode的子节点被创建或删除时
    • NodeCreated:在ZooKeeper路径中创建一个znode时
    • NodeDataChanged:与znode相关的数据被更新时
    • NodeDeleted: znode在ZooKeeper路径中被删除时

    监视事件的类型取决于监视和触发监视的操作。 关于三个主要操作如何产生事件的一些关键信息如下表所示:

    操作 事件生成操作
    exists znode被创建或删除,或其数据被更新
    getChildren znode的子节点被创建或删除,或者znode本身被删除
    getData znode被删除或其数据被更新

    监视事件包括生成事件的znode的路径。 因此,客户端可以通过检查znode的路径来找到NodeCreatedNodeDeleted事件的znode创建和删除。 要发现NodeChildrenChanged事件后哪些子节点发生了变化,必须调用getChildren操作来检索新的子节点列表。 同样,为了发现NodeDataChanged事件的新数据,必须调用getData方法。

    ZooKeeper从其数据模型的角度提供了一系列的保证,并在其基础上构建了监视底层建设,从而实现了其他分布式协调原语的简单,快速和可扩展的构建:

    • Sequential consistency:这确保了客户端的更新总是以FIFO的顺序处理。
    • Atomicity:这确保更新要么成功,要么失败,不会有部分提交的情况。
    • Single system image:客户端可以看到ZooKeeper服务的相同视图,它不依赖于它所连接的系统中的哪个ZooKeeper服务器。
    • Reliability:这确保了这些更新一旦被应用就会一直存在。直到被客户端重写。
    • Timeliness:客户端的系统视图保证在一定的时间内是最新的。这被称为最终一致性。
  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/IcanFixIt/p/7830922.html
Copyright © 2011-2022 走看看