ZooKeeper-分布式利器(2)——CLI与节点

0
分享 2018-02-27
Zookeeper具有命令行界面(CLI),用于和ZooKeeper服务器集群的简单交互,有助于调试和解决问题。要想使用ZooKeeper CLI,首先需要有运行着的ZooKeeper服务器(可通过bin/zkServer运行),然后运行ZooKeeper客户端。一旦客户端成功连接服务端,就可以使用以下命令对ZooKeeper进行操作。
                                                               CLI基本命令
常用命令
1.创建节点
使用create命令,可以创建一个ZooKeeper节点,
create [-s] [-e] path data acl
其中,-s 和 -e用来指定节点属性,顺序或临时节点,若不指定-e,则表示持久节点;acl为权限控制。
1.1创建顺序节点
使用 create -s /zk-sequence 123 命令 创建zk-sequence顺序节点
                                                              顺序节点zk-sequence0000000005
可以看到zk-sequence节点后面自动添加了一串数字
1.2创建临时节点
使用create -e /zk-temp 123 命令创建zk-temp临时节点
                                                              创建临时节点
临时节点在客户端会话结束后,就会自动删除,使用quit退出客户端
                                                              退出客户端
再使用客户端连接服务端,并使用ls /命令查看根目录下的节点
                                                              临时节点消失
可以看到临时节点zk-temp已经消失了。
2.读取节点
读取节点可以通过ls 和 get命令,ls命令可以列出ZooKeeper指定节点下的第一级的所有子节点;get命令可以获取ZooKeeper指定节点的数据内容和属性信息。
若获取根节点下面的所有子节点,使用ls / 命令即可 前文已经用过了。
若想要获取某个节点数据内容 和 元数据(描述性信息),使用get / 命令即可,如获取前文创建的顺序节点
                                                              get
3.更新节点
使用set命令可以更新指定节点的数据内容,用法如下
set path data [version]
                                                              更新节点操作
针对上面读取的同一个节点,更新节点后,可以看到dataVersion由0变为了1
                                                              数据已更新
并且可以看到此节点的内容数据由原来的“123”变为了“data-update”
4.删除节点
delete /path 删除节点。
rmr /path 删除节点及子节点。
                                                              删除节点
可以看到 FirstZnode0000000001节点已经被删除。
总结概念

至此,对于ZooKeeper基本对象Znode节点和层次命名空间,我们已经有了概念。
ZooKeeper提供的命名空间更像一个标准的文件系统。名称是被“/”分割开的路径元素序列。ZooKeeper中的每个节点由路径进行唯一标识。
                                                              ZooKeeper层次命名空间
不像标准的文件系统,ZooKeeper命名空间中的每个Znode节点都有与之相关的内容数据以及子节点。它就像一个允许Znode既是文件同时也是目录的文件系统。(ZooKeeper用来存储协调数据:状态信息、配置、位置信息等,每个节点存储的数据通常是很小的,以字节为单位。)我们使用术语Znode来称呼ZooKeeper的节点。
Znode保有一个stat的结构,包含了 数据修改的版本号,ACL的变化,和时间戳信息 用来做缓存验证和协调更新。每次znode的数据变化,版本号的增加。举个例子,当一个客户端检索数据,它也会收到数据的版本信息。
ZooKeeper也有临时节点的概念,这些znode只存在于创建它的当前会话状态为活跃,一旦会话结束,临时节点也会消失。当你想要实现断开连接会被撤销的事务,临时节点非常好用。

文章来源:http://www.jianshu.com/p/f994f6989f62

0 个评论

要回复文章请先登录注册