使用zookeeper自带的zkCli.sh客户端工具实现对zk的CURD常见操作详解
一、zookeeper自带的 zkCli.sh 客户端工具
1. 应急和测试使用到的一个工具。
还有C# dirver java dirver (驱动)
二、driver的使用方式有两种
zkCli.sh 一般的有两种方式
1. 连接到指定的ip地址
我们输入命令 zkCli.sh 默认地址是本地的, localhost
现在我们来连接 ip地址
![](https://images2018.cnblogs.com/blog/514661/201803/514661-20180309110829830-224769764.png)
命令:zkCli.sh -server host:prot
zkCli.sh -server 192.168.84.136:2181
注意在其他服务器也是一样的连
![](https://images2018.cnblogs.com/blog/514661/201803/514661-20180309110925467-1201473150.png)
2. minSessionTimeout tick * 2
maxSessionTimeout tick * 20
4s - 40s
设置连接时间
命令: [root@localhost bin]# zkCli.sh -timeout 3000
![](https://images2018.cnblogs.com/blog/514661/201803/514661-20180309111056777-225941669.png)
命令格式: ZooKeeper -server host:port cmd args
a. 断开式的 (响应式的 Repl)
zkCli.sh ls / [DataTree]
命令 : root@localhost bin]# zkCli.sh ls /
连接一次后就断开了
![](https://images2018.cnblogs.com/blog/514661/201803/514661-20180309111158837-1641458944.png)
![](https://images2018.cnblogs.com/blog/514661/201803/514661-20180309111207268-144937681.png)
b. 连接式的 就是普通方式
命令: zkCli.sh
三、如何对znode进行CURD的操作
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
用path 去找到 这个DataTree的层级关系。Stat
1. stat path
m命令:stat /datamip
2. set path data[version]
version :CAS一个模式
每次更新之前,都要比较一次当前的version和znode的dataversion版本是否一致
如果不一至,更新失败。
如果不指定version,那么他的version=1 ,相当于强制指定。
![](https://images2018.cnblogs.com/blog/514661/201803/514661-20180309111348154-1012669099.png)
看到两个版本不一致,就无法更新
set /datamip dargon 1
就执行成功
3. ls [linux] 遍历当前znode下面层级的znode节点,在C# 程序中使用。
4. delquota [-n|-b] path
listquota path
setquota -n|-b val path
setquota -n :表示当前子节点的个数
-b :子节点的数据byte大小
setAcl path acl :表示给当前的znode 各一个CURD的权限 【后面学习】
history :操作历史,找到你曾经使用的10个操作
redo cmdno : 重做某一个cmdno命令(重新执行曾经的命令,如 redo 2 就执行了之前的 第2条命令)
delete path [version]: 删除znode, 如果子节点存在 znode是无法删除的。
rmr path :递归删除
create [-s] [-e] path data acl:
-s :顺序节点
-e :临时节点
acl:
addauth: 链接加密
quit /close connect 区别:
quit: 直接退出
close: 并没有退出,这时候可以用connect来连接