常用命令:
1、zk服务命令
启动服务
./zkServer.sh start
查看服务状态
./zkServer.sh status
重启服务
./zkServer.sh restart
连接服务
./zkCli.sh -server 127.0.0.1:2181
2、节点操作
创建节点
#创建永久的节点 create 节点名 值
create hadooop helloJavaBoy_ahua
#创建临时节点 create -e(ephemeral) /节点名 值 session完全断开后(服务器重启之后),数据消失
create -e /test hello
#创建有序节点 create -s(Serializable) /节点名 值 可以避免节点命名冲突
create -s /test2 helloWorld
修改节点
#语法: set 节点名 值
set test helloZookeeper
删除节点
#语法: delete /节点名
delete test
注意:delete只能删除不含子节点的节点,如果要删除包含子节点的节点则需要使用rmr命令
rmr node
查询节点
#语法:get /节点名
[zk: localhost:2181(CONNECTED) 16] get /hadoop
"123456"
cZxid = 0x46 #数据创建时的事务id c create
ctime = Fri Jun 25 09:42:34 CST 2021 #数据节点创建时的时间 create
mZxid = 0x46 #数据修改时的数据事务id m modify 修改
mtime = Fri Jun 25 09:42:34 CST 2021 #数据节点修改时的时间 m modify
pZxid = 0x46 #当前节点的子节点最后一次被修改的事务id
cversion = 0 #c child 子节点的版本号==>子节点的更改次数
dataVersion = 0 #当前节点的更改次数
aclVersion = 0 #节点ACL的更改次数 ACL access controller Lists
ephemeralOwner = 0x0 #如果该节点是临时节点,则该值为当前sessionId,若为临时节点,则当前 值为0x0
dataLength = 8 #数据内容的长度
numChildren = 0 #数据当前节点子节点个数
[zk: localhost:2181(CONNECTED) 17]
可以使用stat命令查询节点状态,它返回值和get命令类似,但不会返回节点数据
#语法:stat /节点名
[zk: localhost:2181(CONNECTED) 43] stat /test
cZxid = 0x11
ctime = Fri Jun 25 19:11:43 CST 2021
mZxid = 0x11
mtime = Fri Jun 25 19:11:43 CST 2021
pZxid = 0x11
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: localhost:2181(CONNECTED) 44]
监听 watch 观察者模式==》触发条件
[zk: localhost:2181(CONNECTED) 6] get /test
"hello"
cZxid = 0x50
ctime = Fri Jun 25 10:01:49 CST 2021
mZxid = 0x51
mtime = Fri Jun 25 10:02:04 CST 2021
pZxid = 0x50
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 7] get /javaboy watch
"dw"
cZxid = 0x50
ctime = Fri Jun 25 10:01:49 CST 2021
mZxid = 0x51
mtime = Fri Jun 25 10:02:04 CST 2021
pZxid = 0x50
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 8] set /test"girl"
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/test
cZxid = 0x50
ctime = Fri Jun 25 10:01:49 CST 2021
mZxid = 0x52
mtime = Fri Jun 25 10:02:38 CST 2021
pZxid = 0x50
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 9]
3、权限 ACL(access controller lists)访问控制列表
前言:
zookeeper 类似文件系统,client 可以创建节点、更新节点、删除节点,那么如何做到节点的权限的控制呢?zookeeper的access control list 访问控制列表可以做到这一点。
ACL 权限控制,使用:scheme:id:perm 来标识,主要涵盖 3 个方面:
权限模式(Scheme):授权的策略
授权对象(ID):授权的对象
权限(Permission):授予的权限
特性:
ZooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限
每个znode支持设置多种权限控制方案和多个权限
子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点
目前自己还在学习 后期会专门出一期博客讲解zookeeper的访问控制器
5、退出
quit