4. ZooKeeper 基本操作
ZooKeeper的数据模型及其API支持以下九个基本操作:
| 操作 | 描述 |
|---|---|
| create | 在ZooKeeper命名空间的指定路径中创建一个znode |
| delete | 从ZooKeeper命名空间的指定路径中删除一个znode |
| exists | 检查路径中是否存在znode |
| getChildren | 获取znode的子节点列表 |
| getData | 获取与znode相关的数据 |
| setData | 将数据设置/写入znode的数据字段 |
| getACL | 获取znode的访问控制列表(ACL)策略 |
| setACL | 在znode中设置访问控制列表(ACL)策略 |
| sync | 将客户端的znode视图与ZooKeeper同步 |
我们来使用ZooKeeper Java shell对上面中提到的ZooKeeper操作进行演示:
- 用
ThisIsTheRootNode作为数据创建一个名为root的znode:
[zk: localhost(CONNECTED) 0] create /root "ThisIsTheRootNode"
Created /root
- 获取刚创建的
root的znode的内容:
[zk: localhost(CONNECTED) 1] get /root
"ThisIsTheRootNode"
…… ……
…… ……
- 用
ThisIsChild-1作为数据为root创建一个名为child-1的子节点:
[zk: localhost(CONNECTED) 2] create /root/child-1 "ThisIsChild-1"
Created /root/child-1
- 用
ThisIsChild-2作为数据为root创建一个名为child-2的子节点:
[zk: localhost(CONNECTED) 3] create /root/child-2 "ThisIsChild-2"
Created /root/child-2
- 列出
root的子节点:
[zk: localhost(CONNECTED) 4] ls /root
[child-2, child-1]
- 获取
root的访问控制列表:
[zk: localhost(CONNECTED) 5] getAcl /root
'world,'anyone
: cdrwa
- 由于
root拥有2个子节点,所以不允许删除root:
[zk: localhost(CONNECTED) 6] delete /root
Node not empty: /root
- 删除子节点
child-1:
[zk: localhost(CONNECTED) 7] delete /root/child-1
- 删除子节点
child-2:
[zk: localhost(CONNECTED) 8] delete /root/child-2
- 列出
root的内容:
[zk: localhost(CONNECTED) 9] ls2 /root
[]
…… ……
…… ……
- 删除
root:
[zk: localhost(CONNECTED) 10] delete /root
除了上述描述的操作外,ZooKeeper还支持使用称为multi的操作对znodes进行批量更新。 这将多个原始操作组合在一起成为一个单元。 一个multi操作本质上也是原子的,这意味着要么所有的更新成功,要么整个更新整个失败。
ZooKeeper不允许部分写入或读取znode数据。 设置znode的数据或读取时,znode的内容将被替换或完全读取。 ZooKeeper中的更新操作(如delete或setData操作)必须指定正在更新的znode的版本号。 版本号可以通过使用exists()方法调用来获得。 如果指定的版本号与znode中的版本号不匹配,则更新操作将失败。 另外,需要注意的另一件重要的事情是ZooKeeper中的更新是非阻塞(non-blocking)操作。
ZooKeeper中的读写操作如下图所示:

从前面的图片中,需要注意这些操作两个关键地方:
- Read requests:这些在客户端当前连接的ZooKeeper服务器上进行局部处理
- Write requests:这些被转发给领导者,并在生成响应之前通过多数协商一致
4. ZooKeeper 基本操作的更多相关文章
- zookeeper基本操作
理解Zookeeper的一种方法是将他视为一个提供高可用性的文件系统.它没有文件和目录,但是有一个统一概念的节点,叫做znode,作为数据以及其他znode的容器.znode来自于一个层次级的命名空间 ...
- 转载:ZooKeeper Programmer's Guide(中文翻译)
本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的.本文包含理论信息和实践信息. 本指南的前四节对各种ZooKeeper概念进行较高层次的讨论.这些概念对于理解ZooKeep ...
- ZooKeeper程序员指南(转)
译自http://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html 1 简介 本文是为想要创建使用ZooKeeper协调服务优势的分布式 ...
- ZooKeeper学习第四期---构建ZooKeeper应用
一.配置服务 配置服务是分布式应用所需要的基本服务之一,它使集群中的机器可以共享配置信息中那些公共的部分.简单地说,ZooKeeper可以作为一个具有高可用性的配置存储器,允许分布式应用的参与者检索和 ...
- zookeeper[1] (转)ZooKeeper Programmer's Guide(zookeeper编程向导)---中文
原文:http://www.cnblogs.com/Xrinehart/p/3512509.html 本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的.本文包含理论信息和实 ...
- 【Zookeeper系列】构建ZooKeeper应用(转)
原文地址:https://www.cnblogs.com/sunddenly/p/4064992.html 一.配置服务 配置服务是分布式应用所需要的基本服务之一,它使集群中的机器可以共享配置信息中那 ...
- ZooKeeper系列 (4) 构建ZooKeeper应用
原文地址: http://www.cnblogs.com/wuxl360/p/5817540.html 一.配置服务 配置服务是分布式应用所需要的基本服务之一,它使集群中的机器可以共享配置信息中那些公 ...
- ZooKeeper开发者指南(五)
引言 这个文档是为了想利用ZooKeeper的协调服务来创建分布式应用的开发者提供的指南.它包括概念和实践的信息. 这个文档的一开始的的四部分呈现了不同ZooKeeper高级概念的的讨论.理解Zook ...
- zookeeper程序员指南
1 简介本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的.本文包含理论信息和实践信息.本指南的前四节对各种ZooKeeper概念进行较高层次的讨论.这些概念对于理解ZooK ...
随机推荐
- Even Parity uva11464 模拟
Even Parity Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu [Submit] ...
- Android 中更新UI的方法
1)使用Activity.runOnUiThread(Runable action)方法 情景一: 在主线程中,定义方法,在方法中启动线程. public class MainActivity ext ...
- vue2+webpack使用1--初识默认展示页面
1 从安装好的展示 vue2+webpack项目开始 2 关键目录及文件 3 关系图 4 类比nodejs项目的理解 // src/main.js import Vue from 'vue' // ...
- HDU1251统计难题(水字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- asp.net mvc5中使用缓存依赖SqlCacheDependency
缓存是用来提高应用性能,降低服务器压力.适用于数据不易变,数据易通用的情景, 对于动态查询数据,例如数据分析,最好放弃使用缓存.使用缓存最麻烦的就是保持源数据和缓存的中的数据一致. 缓存(Cache) ...
- C#钩子类 几乎捕获键盘鼠标所有事件
using System; using System.Text; using System.Runtime.InteropServices; using System.Reflection; usin ...
- 笨鸟先飞之ASP.NET MVC系列之过滤器(03动作过滤器过滤器)
概念介绍 动作过滤器应该是我们平常工作中需要用到最多的过滤器了,动作过滤器,主要在我们的动作方法执行前后执行. 如果我们需要创建动作过滤器需要实现IActionFilter接口. 我们看到该接口里有两 ...
- SAP文件的上传下载 SMW0,二进制文件
TCODE: SMW0 选择:二进制数据 输入包名和对象名 新建 维护文件类型 文件参数信息 下载: DATA: LS_WWWDATA_ITEM LIKE WWWDATATAB, " LV_ ...
- UVa10723 - Cyborg Genes
这题我能想到的解决方法是: 最优解的长度好找,两串的长度和-LCS: 根据anslen,枚举出解的数目...但想不出简单有效的枚举方法,这种做法可能超时 网上看大神的博客后,发现大家都用的此方法: 最 ...
- oracle导不出空表的解决办法
1.先进行表分析(一定要执行此步,否则查询空表可能不准确) select 'analyze table '||table_name||' compute statistics;' from user_ ...