zkCli使用手册

zkClient命令笔记




connect host:port 连接到其他的zk服务器,例:connect 192.168.174.222:2181
-------------------------------------------------------------------------------------------------------
get path [watch] 获取某个节点的数据,如果加上watch参数,那么当这个节点内的数据发生变化的时候就会收到通知
例:直接获取
[zk: localhost:2181(CONNECTED) 2] get /mpcapp/mpc3
789
cZxid = 0x4a00000057//创建时候的id
ctime = Wed Nov 30 15:32:16 CST 2016//创建时间
mZxid = 0x4a00000057//修改时候的id
mtime = Wed Nov 30 15:32:16 CST 2016//修改时间
pZxid = 0x4a00000057//持久化version
cversion = 0//创建时候的version
dataVersion = 0//修改后的version,每次修改这个version都会改变,刚创建的时候和cversion一样
aclVersion = 0//###########################################
ephemeralOwner = 0x0//是否是永久的(有永久节点和临时节点之分)
dataLength = 3//数据的长度
numChildren = 0//子节点数量
例:获取的时候带上watch参数,这时候改变参数的内容(通过另外一个客户端)
[zk: localhost:2181(CONNECTED) 4] get /mpcapp/mpc3 watch
789
cZxid = 0x4a00000057
ctime = Wed Nov 30 15:32:16 CST 2016
mZxid = 0x4a00000057
mtime = Wed Nov 30 15:32:16 CST 2016
pZxid = 0x4a00000057
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
如上,首先返回了数据,这时候在另一个客户端改变内容
WATCHER::


WatchedEvent state:SyncConnected type:NodeDataChanged path:/mpcapp/mpc3
打印出了内容改变的事件,这就是zookeeper给我们提供的监听功能了。
---------------------------------------------------------------------------------------------------------------------------------------


ls path [watch] 列出某个节点的子节点,如果加上watch,那么监听该节点的子节点的变化,比如多一个子节点,少了一个子节点的事件都会被监听到
例:直接列出某个节点的子节点
[zk: localhost:2181(CONNECTED) 5] ls /mpcapp
[mpc3]
例:加上watch参数
[zk: localhost:2181(CONNECTED) 6] ls /mpcapp watch
[mpc3]
然后给目录下面增加一个节点
[zk: localhost:2181(CONNECTED) 7] 
WATCHER::


WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/mpcapp
打印出了子节点改变事件。 需要注意的是,在get和ls中使用watch的话永远只注册一次监听,也就是说内容改变一次后或者子节点改变一次后监听到了事件,在发生改变的话就不能监听到事件了
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set path data [version] 修改某个节点的数据,这个version参数是指你要修改的节点的数据的当前的version也就是dataVersion,如果两个version不一致会报错
例:[zk: localhost:2181(CONNECTED) 1] set /mpcapp/mpc2 aaa
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000064
mtime = Wed Nov 30 16:11:54 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
例:加上version
[zk: localhost:2181(CONNECTED) 4] set /mpcapp/mpc2 aaa 1
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000067
mtime = Wed Nov 30 16:14:07 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
刚才修改过一次,数据的dataVersion是1,所以在调用命令的时候也用1
-----------------------------------------------------------------------
rmr path 删除某个节点,并删除该节点下的所有子节点
-------------------------------------------------------------------------------------
setquota -n|-b val path 为某个节点设置配额(所谓的配额是指该节点的最大子节点数n,或者该节点的最大数据值的长度v) val就是要设置的配额的值
例:设置子节点最大数
[zk: localhost:2181(CONNECTED) 6] setquota -n 2 /mpcapp
Comment: the parts are option -n val 2 path /mpcapp
例:设置数据最大长度
[zk: localhost:2181(CONNECTED) 20] setquota -b 100 /mpcapp     
Comment: the parts are option -b val 100 path /mpcapp
#这里遇到的问题是,一个节点只能设置n或者b不能同时设置n和b;设置了n的话b为-1,设置了b的话n为-1;待查明原因
#这里设置了最大值以后,设置超过最大值的子节点数量或者数据长度也能够添加成功,但是会在但是会在${dataDir}/zookeeper.out中记录警告信息


---------------------------------------------------------------------------------
listquota path 列出指定节点的最大值限制
例:[zk: localhost:2181(CONNECTED) 23] listquota /mpcapp           
absolute path is /zookeeper/quota/mpcapp/zookeeper_limits
Output quota for /mpcapp count=-1,bytes=100
Output stat for /mpcapp count=3,bytes=9
-------------------------------------------------------------------------------------


delquota [-n|-b] path 删除指定节点的子节点最大值或者数据长度最大值
--------------------------------------------------------------------------------------------
quit 退出
-----------------------------------------------------------------------------
printwatches on|off 这个命令执行不了,不知道为什么
------------------------------------------------------------------------------------------
create [-s] [-e] path data acl 创建一个节点,带-s那么这是一个临时节点,在断开连接后就销毁,-e就会给创建的节点上面加上序列号(每个目录有自己独立的序列号) path是节点的路径 data是节点的值
acl是节点的权限控制


权限主要有:
CREATE : 创建子节点
READ : 获取节点数据和子节点列表
WRITE : 更新节点数据
DELETE : 删除子节点
ADMIN : 设置节点ACL的权限


与授权相关的几个概念:
shchema:权限模式,有IP和digest两种
ID:授权对象 
schema为IP时,该值为具体的IP地址
scheme为digest时,该值为 userName:base64(sha1(userName:password))
zookeeper的javaAPI提供了一个工具类org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以快速生成加密的密文
permission:权限,指的就是上面所说的五种权限
最终的组合为: schema + ID + permission


例:创建节点
[zk: localhost:2181(CONNECTED) 31] create /mpcapp/mpc4 123
Created /mpcapp/mpc4
这个节点是永久的,断开连接也不会删除
例:创建临时节点//临时节点是不能有子节点的
[zk: localhost:2181(CONNECTED) 32] create -e /mpcapp/mpc5 555555
Created /mpcapp/mpc5
例:创建序号节点
[zk: localhost:2181(CONNECTED) 33] create -s /mpcapp/mpc6 55555544
Created /mpcapp/mpc60000000006
[zk: localhost:2181(CONNECTED) 34] create -s /mpcapp/mpc7 55555544
Created /mpcapp/mpc70000000007
[zk: localhost:2181(CONNECTED) 35] 
例:创建带有权限的节点
[zk: localhost:2181(CONNECTED) 35] create /mpcapp/mpc8  88888 ip:192.168.174.139:crwda
Created /mpcapp/mpc8


[zk: localhost:2181(CONNECTED) 37] create /mpcapp/mpc9 99999 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad   
Created /mpcapp/mpc9
----------------------------------------------------------------------------------------------------------------------------------


stat path [watch] 查看某个节点的状态信息 加上watch参数后就会监听状态改变
例:
[zk: localhost:2181(CONNECTED) 38] stat /mpcapp
cZxid = 0x4a00000054
ctime = Wed Nov 30 15:31:01 CST 2016
mZxid = 0x4a00000054
mtime = Wed Nov 30 15:31:01 CST 2016
pZxid = 0x4a0000007d
cversion = 12
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 8


--------------------------------------------------------------------------------------
close 关闭连接,一般退出的时候先关闭连接,然后quit


----------------------------------------------------------------------------------------


ls2 path [watch] 和ls用法功能一样,唯一的区别就是列出子节点的同时列出了该节点的状态信息


----------------------------------------------------------------------------------------------


history 列出命令历史
----------------------------------------------------------------------------------------------------------
redo cmdno 该命令可以重新执行指定命令编号的历史命令,命令编号可以通过history查看
----------------------------------------------------------------------------------------
getAcl path 获取某个节点的授权信息
例:
[zk: mpc6:2181(CONNECTED) 48] getAcl /mpcapp/mpc8
'ip,'192.168.174.139
: cdrwa


[zk: mpc6:2181(CONNECTED) 49] getAcl /mpcapp/mpc9
'digest,'hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=
: cdrwa


----------------------------------------------------------
setAcl path acl 设置某个节点的授权信息
例:
[zk: localhost:2181(CONNECTED) 0] setAcl /mpcapp/mpc2 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad 
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000068
mtime = Wed Nov 30 16:14:17 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 3
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
-------------------------------------------------------------------------------------------
delete path [version] 删除一个节点,该节点下不能有子节点;version的就是指定dataVersion不一致不能删除


-----------------------------------------------------------------------------------------------------------------


addauth scheme auth 
    schema:可取ip或digest
    auth
        schema==digest时为 userName:password
        schema==ip时为
------------------------------------------------------------------------------
sync path 立刻在服务器之间同步信息(个人理解是这样的,还没有确定)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值