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:客户端的系统视图保证在一定的时间内是最新的。这被称为最终一致性。

5. 监视和ZooKeeper操作的更多相关文章

  1. Zookeeper操作

    Zookeeper操作 注意搭建: 1.集群规模不小于3个节点 2.服务器之间系统时间要保持一致 1.搭建步骤: 1.解压安装包 2.设置zookeeper环境变量 3.修改配置文件————zoo.c ...

  2. list utilities监视数据库前滚操作

    您可以使用 db2pd 或 LIST UTILITIES 命令来监视数据库前滚操作的进度. 过程 发出 LIST UTILITIES 命令并指定 SHOW DETAIL 参数 db2 LIST UTI ...

  3. 第8章 ZooKeeper操作

    目录 8.1 集群环境搭建 1.上传ZooKeeper安装文件 2.编写配置文件 3.拷贝ZooKeeper安装信息到其它节点 4.修改其它节点配置 5.启动ZooKeeper 6.查看启动状态 7. ...

  4. 连接Zookeeper操作

    public class ZKConnector implements Watcher{ private static final Logger logger =LoggerFactory.getLo ...

  5. 坐下坐下,基本操作(ZooKeeper 操作篇)

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. Z ...

  6. zookeeper操作节点代码

    package cn.hbaf.zookeeper_api; import org.apache.curator.RetryPolicy; import org.apache.curator.fram ...

  7. 基于ZooKeeper的分布式锁和队列

    在分布式系统中,往往需要一些分布式同步原语来做一些协同工作,上一篇文章介绍了Zookeeper的基本原理,本文介绍下基于Zookeeper的Lock和Queue的实现,主要代码都来自Zookeeper ...

  8. ZooKeeper学习第一期---Zookeeper简单介绍

    一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术主要用来解决分布式环境当中多个进程之间的同 ...

  9. ZooKeeper架构设计及其应用要点

    问题导读: 1.ZooKeeper的数据模型是什么 ?2.ZooKeeper应用有哪些陷阱 ?3.每个节点(ZNode)中存储的是什么?4.一个ZNode维护了一个状态结构都包含了什么?5.ZNode ...

随机推荐

  1. 关于Java里面File类创建txt文件重复???

    private JButton getOpenButton() { if (openButton == null) { openButton = new JButton(); openButton.s ...

  2. zoj 2136 Longest Ordered Subsequence 最长上升子序列 新思路

    Longest Ordered Subsequence Time Limit: 2 Seconds      Memory Limit: 65536 KB A numeric sequence of ...

  3. jquery系列教程7-自定义jquery插件全解:对象函数、全局函数、选择器

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  4. Java IO(Properties/对象序列化/打印流/commons-io)

    Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...

  5. 在HTM中显示播放视频

    注意:video中source 源文件地址src替换成你的video路径<html>    <button onclick="playPause();">播 ...

  6. RabbitMQ 笔记-基本概念

    ConnectionFactory.Connection.Channel ConnectionFactory.Connection.Channel,这三个都是RabbitMQ对外提供的API中最基本的 ...

  7. [mysql使用(2)] mysql的一些语法与Oracle的差别

    一.表空间 mysql的表空间有共享表空间和独占表空间,独占表空间,其实就是一张表一个表空间,其实也就是一张表一个数据文件,共享表空间似乎有点类似oracle的表空间,不同的表可以保存在同一个数据文件 ...

  8. 想要写出高性能sql语句,你得记住这些……

    1.在from子句中包含多个表名时,必须选择记录条数最少的表作为基础表:若有三个以上的表连接查询,那就需要选择交叉表作为基础表,交叉表指被其他表引用的表. 2.使用exists代替in.使用not e ...

  9. [Hdu1342] Lotto

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1342 题目大意:输出6--13从小到大个数,然后按顺序输出6个数,输出所有种可能. 解题思路:这题难度 ...

  10. viewpager的滑动

    在一个已经是月黑风高快下班的时刻了,我们产品突然通知我们开会,要添加一个功能,他闲来无聊随便戳了戳facebook,说点开联系人的那个横向滑动的卡片式的效果不错,让我们在我们的app里添加这个效果,我 ...