前面已经搭建起一个能够正常运行的Zk集群了,接下来,可以使用客户端对Zk进行操作,下面重点要看下zkCli这个脚本来使用一些命名行工具。
进入Zookeeper的bin目录后,直接执行执行:
zkCli.cmd
这里用的是window,如果是linux的话就执行zkCli.sh
如要希望连接指定的Zk服务器,可以通过如下方式实现:
zkCli.cmd -server ip:port
当看到如下信息时,表示已经成功连接上本地的Zk服务器了:
1.create 创建
使用create命令,可以创建一个Zk节点。用法如下:
create [-s] [-e] path data acl
其中,
-s
表示
顺序节点
,
-e
表示
临时节点
。默认情况下,
即不添加-s或-e参数的,创建的是持久节点
。
例如:
执行完上面的命令,就在Zk的根节点下创建了一个叫/zk-company的节点,并且节点的数据内容是"juxinli2016"。另外,create命令的最后一个参数是acl,它用来进行权限控制,缺省情况下,不做任何权限控制。
2.ls、get 读取
2.1 ls
使用ls命令,可以列出Zk指定节点下的所有子节点。当然,这个命令只能看到指定节点下第一级的所有子节点,用法如下:
ls path [watch]
其中,
path
表示的是指定
数据节点的节点路劲
。
例如:
如上,zk-company节点是上面create命令创建的,zookeeper节点是第一次部署Zk集群时默认在根节点"/"下的保留节点。
2.2 get
使用get命令,可以获取Zk指定节点的数据内容和属性信息,用法如下:
get path [watch]
例如:
如上,第一行是节点/zk-company的数据内容,其他几行则是创建节点的事物ID(cZxid),最后一次更新该节点的事物ID(mZxid)和最后一次更新该节点的时间(mtime)等属性信息。
3.set 更新
使用set命令,可以更新指定节点的数据内容。用法如下:
set path data [version]
其中,
data
就是要
更新的新内容
。注意,set命名后面还有一个
version
参数,在Zk中,节点的数据是有版本概念的。这个参数用于指定
本次更新操作是基于ZNode的哪一个数据版本进行的
。
例如:
如上,节点/zk-company的数据内容被更新为"juxinli2016+"了。在输出的信息中,dataVersion的值由原来的0变成1,这是因为刚才的更新操作导致该节点的数据版本也发生了变更。
4.delete 删除
使用detelte,可以删除Zk上的指定节点。用法如下:
delete path [version]
此命名中的
version
参数和set命名中的
version
参数的作用是一致的。
例如:
如上,执行玩以上命名后,就可以把/zk-company这个节点成功删除了。但需要注意的是,要想删除某一个指定节点,该节点必须没有子节点存在。验证如下:
如上,当包含子节点时,删除失败,即delete命令无法删除一个包含子节点的节点。
参考:
《从Paxos到Zookeeper》