上一章开启了zookeeper的服务器端,然后来看看zookeeper的客户端。
- 启动客户端
[root@host-10-75-169-14 zookeeper-3.4.14]# ./bin/zkCli.sh - 显示所有操作命令
[zk: localhost:2181(CONNECTED) 0] help
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 - 查看当前znode中所包含的内容
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper] - 查看当前节点详细数据
[zk: localhost:2181(CONNECTED) 2] ls2 /
[zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1 - 创建普通节点
[zk: localhost:2181(CONNECTED) 5] create /team “Art”
Created /team
[zk: localhost:2181(CONNECTED) 6] create /team/dev “worker”
Created /team/dev
[zk: localhost:2181(CONNECTED) 7] ls /
[team, zookeeper]
[zk: localhost:2181(CONNECTED) 8] ls /team
[dev] - 获取节点的值 get /sanguo/shuguo
[zk: localhost:2181(CONNECTED) 9] get /team/dev
worker
cZxid = 0x3
ctime = Wed Sep 04 13:13:24 CST 2019
mZxid = 0x3
mtime = Wed Sep 04 13:13:24 CST 2019
pZxid = 0x3
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 10] get /team
Art
cZxid = 0x2
ctime = Wed Sep 04 13:12:37 CST 2019
mZxid = 0x2
mtime = Wed Sep 04 13:12:37 CST 2019
pZxid = 0x3
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1 - 创建短暂(临时)节点
[zk: localhost:2181(CONNECTED) 11] create -e /team/test “tester”
Created /team/test
[zk: localhost:2181(CONNECTED) 12] ls /team
[dev, test]
[zk: localhost:2181(CONNECTED) 13] get /team/test
tester
cZxid = 0x4
ctime = Wed Sep 04 13:15:33 CST 2019
mZxid = 0x4
mtime = Wed Sep 04 13:15:33 CST 2019
pZxid = 0x4
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x10004aeae0d0000
dataLength = 6
numChildren = 0
退出并重新启动客户端,/team/test将丢失
[zk: localhost:2181(CONNECTED) 14] quit
Quitting…
2019-09-04 13:16:43,718 [myid:] - INFO [main:ZooKeeper@693] - Session: 0x10004aeae0d0000 closed
2019-09-04 13:16:43,720 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@522] - EventThread shut down for session: 0x10004aeae0d0000
[root@host-10-75-169-14 zookeeper-3.4.14]# ./bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /team
[dev] - 创建带有序号的节点,其序号会自动递增,因为team中已有dev,所以test的序号从2开始
[zk: localhost:2181(CONNECTED) 1] create -s /team/test “tester1”
Created /team/test0000000002
[zk: localhost:2181(CONNECTED) 2] create -s /team/test “tester1”
Created /team/test0000000003 - 修改节点数据值
[zk: localhost:2181(CONNECTED) 3] set /team/dev “developer”
cZxid = 0x3
ctime = Wed Sep 04 13:13:24 CST 2019
mZxid = 0x9
mtime = Wed Sep 04 13:20:33 CST 2019
pZxid = 0x3
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0 - 节点值的变化监听 get /team/dev watch 一次有效
需多客户端配合测试,我在另一套机器上配置了集群,共有三台zookeeper服务端,分别是walter101,walter102,walter103。依次开启walter101,walter102,walter103上的zookeeper,则walter102为leader,walter101和walter103为follower。- 在walter102上对节点进行查看并注册监听:
[zk: localhost:2181(CONNECTED) 1] get /team/dev watch
developer
cZxid = 0x400000003
ctime = Fri Sep 06 11:10:47 EDT 2019
mZxid = 0x400000003
mtime = Fri Sep 06 11:10:47 EDT 2019
pZxid = 0x400000003
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0 - 在walter101上对该节点的值进行修改:
[zk: localhost:2181(CONNECTED) 6] set /team/dev ‘walter101’
cZxid = 0x400000003
ctime = Fri Sep 06 11:10:47 EDT 2019
mZxid = 0x500000003
mtime = Fri Sep 06 19:35:35 EDT 2019
pZxid = 0x400000003
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0 - 则在walter102上会自动提醒节点变化:
[zk: localhost:2181(CONNECTED) 2]
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/team/dev - 此时在walter102上该节点的值为:
[zk: localhost:2181(CONNECTED) 2] get /team/dev
walter101
cZxid = 0x400000003
ctime = Fri Sep 06 11:10:47 EDT 2019
mZxid = 0x500000003
mtime = Fri Sep 06 19:35:35 EDT 2019
pZxid = 0x400000003
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
- 在walter102上对节点进行查看并注册监听:
- 节点的子节点变化监听(路径变化) ls /team watch 一次有效
需多客户端配合测试- 在walter102上查看/team下的节点,并注册监听:
[zk: localhost:2181(CONNECTED) 4] ls /team watch
[dev, test0000000002, test0000000003] - 在walter101上,添加一个属于/team的一个节点:
[zk: localhost:2181(CONNECTED) 7] create /team/SM ‘scrum master’
Created /team/SM - 则在walter102上,会自动提醒/team有路径变化:
[zk: localhost:2181(CONNECTED) 5]
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/team - 在walter102上,查看/team下的节点为:
[zk: localhost:2181(CONNECTED) 5] ls /team
[SM, dev, test0000000002, test0000000003]
- 在walter102上查看/team下的节点,并注册监听:
- 删除节点
[zk: localhost:2181(CONNECTED) 4] delete /team/dev
[zk: localhost:2181(CONNECTED) 5] ls /team
[test0000000002, test0000000003] - 递归删除节点
[zk: localhost:2181(CONNECTED) 6] rmr /team
[zk: localhost:2181(CONNECTED) 7] ls /
[zookeeper] - 查看节点状态
[zk: localhost:2181(CONNECTED) 8] stat /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0xd
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
Stat结构体:
- czxid-创建节点的事务zxid,每次修改zookeeper状态都会收到一个zxid的时间戳
- ctime-被创建的毫秒数(从1970年开始)
- mzxid-最后更新的事务zxid
- mtime-最后修改的毫秒数(从1970年开始)
- pZxid-最后更新的子节点
- cversion-子节点变化号,znode子节点的修改次数
- dataversion-数据变化号
- aclVersion-访问控制列表的变化号
- ephemeralOwner-如果是临时节点,这个是znode拥有者的session id,如果不是临时节点则为0
- dataLength-znode的数据长度
- numChildren -znode子节点数量
本文介绍了Zookeeper客户端的启动及各种操作,包括查看所有命令、列出节点内容、创建普通和临时节点、设置与获取节点数据、监听节点变化、删除节点等,展示了Zookeeper节点的详细信息和客户端交互过程。
1531

被折叠的 条评论
为什么被折叠?



