1、数据操作
1.1、准备工作
# 创建一个持久目录/test
[zk: localhost:2181(CONNECTED) 0] create /test test
Created /test
[zk: localhost:2181(CONNECTED) 1] ls /
[test, zookeeper]
1.2、获取节点数据
1.2.1、命令参数介绍
使用get命令可以获取节点数据,命令格式如下:
get [-s] [-w] path
注意: 注意事项同ls
1.2.2、获取/test节点数据
[zk: localhost:2181(CONNECTED) 2] get -s /test
test
cZxid = 0x32
ctime = Tue May 30 20:51:00 CST 2023
mZxid = 0x32
mtime = Tue May 30 20:51:00 CST 2023
pZxid = 0x32
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
1.3、设置节点数据
1.3.1、命令参数介绍
使用set命令可以获取节点数据,命令格式如下:
set [-s] [-v version] path data
注意:如果要指定 version,一定要是当前的version值,默认情况就是当前的version值,可以不写
1.3.2、更新/test节点数据
[zk: localhost:2181(CONNECTED) 4] set /test ygbh
[zk: localhost:2181(CONNECTED) 5] get /test
ygbh
[zk: localhost:2181(CONNECTED) 6] get -s /test
ygbh
cZxid = 0x32
ctime = Tue May 30 20:51:00 CST 2023
mZxid = 0x33
mtime = Tue May 30 20:56:06 CST 2023
pZxid = 0x32
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
# 注意:dataVersion的内容是每次更新,该值会递增下去
1.3.3、自定义版本号更新数据
# 当前的version值是1,如果要使用指定版本设置数据,version一定是当前的值,否则报错。
[zk: localhost:2181(CONNECTED) 8] set /test ygbh -v 3
version No is not valid : /test
# 需要设置v=1,才可设置成功
[zk: localhost:2181(CONNECTED) 9] set /test ygbh_v1 -v 1
[zk: localhost:2181(CONNECTED) 10] get -s /test
ygbh_v1
cZxid = 0x32
ctime = Tue May 30 20:51:00 CST 2023
mZxid = 0x36
mtime = Tue May 30 20:59:15 CST 2023
pZxid = 0x32
cversion = 0
dataVersion = 2 # 设置成功,自增1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
2、资源配额
2.1、查看资源配额
2.1.1、命令参数介绍
使用listquotat命令可以获取节点数据,命令格式如下:
listquota path
注意:注意事项同ls
2.1.2、查看指定结点的资源
[zk: localhost:2181(CONNECTED) 11] create /ygbh_test ygbh_test
Created /ygbh_test
[zk: localhost:2181(CONNECTED) 12] listquota /ygbh_test
absolute path is /zookeeper/quota/ygbh_test/zookeeper_limits
quota for /ygbh_test does not exist.
# 默认新创建的结点资源,是没有资源配额的。
2.2、设置资源配额
2.2.1、命令参数介绍
使用listquotat命令可以获取节点资源配额数据,命令格式如下:
setquota -n|-b|-N|-B val path
注意:
-n 设置节点的节点个数
-b 设置节点的数据长度
如果超出了配置限制,不会停止行为操作,只是ZooKeeper将会在log日志中打印WARN日志。
其他注意事项同ls
2.2.2、设置节点的数量资源
[zk: localhost:2181(CONNECTED) 40] create /ygbh ygbh
Created /ygbh
[zk: localhost:2181(CONNECTED) 41] setquota -n 2 /ygbh
[zk: localhost:2181(CONNECTED) 42] listquota /ygbh
absolute path is /zookeeper/quota/ygbh/zookeeper_limits
Output quota for /ygbh count=2,bytes=-1=;byteHardLimit=-1;countHardLimit=-1
Output stat for /ygbh count=1,bytes=4
# Output stat 后面的 count 表示的是总数量,bytes指定的是数据总长度,包括的子节点的数据长度
# 指定数量的话,数据长度默认没有限制
[zk: localhost:2181(CONNECTED) 41] listquota /ygbh
absolute path is /zookeeper/quota/ygbh/zookeeper_limits
Output quota for /ygbh count=2,bytes=-1=;byteHardLimit=-1;countHardLimit=2
Output stat for /ygbh count=4,bytes=54
# 查看日志是否有打印出来限制,此功能没有什么用,只是日志输出
2.2.3、设置节点的数据长度资源
[zk: localhost:2181(CONNECTED) 44] create /ygbh ygbh
[zk: localhost:2181(CONNECTED) 45] setquota -b 8 /ygbh
[zk: localhost:2181(CONNECTED) 46] listquota /ygbh
absolute path is /zookeeper/quota/ygbh/zookeeper_limits
Output quota for /ygbh count=2,bytes=8=;byteHardLimit=-1;countHardLimit=2
Output stat for /ygbh count=1,bytes=4
# 指定数据长度的话,节点数量默认没有限制
2.3、删除资源配额
2.3.1、命令参数介绍
使用delquota命令可以删除节点资源配额数据,命令格式如下:
delquota [-n|-b] path
注意:
-n 删除节点的节点个数
-b 删除节点的数据长度
2.3.2、删除资源配额
[zk: localhost:2181(CONNECTED) 11] delquota -n /ygbh
[zk: localhost:2181(CONNECTED) 12] delquota -b /ygbh
2.3.3、检查效果
[zk: localhost:2181(CONNECTED) 14] listquota /ygbh
[zk: localhost:2181(CONNECTED) 15] listquota /ygbh
2.4、总结
1. zookeeper的quota并没有实际的限制作用,超出了也只是打印WARN级别日志。
2. quota有子节点数量和字节大小限制两种。
3. quota是以前缀匹配路径,作用在指定路径路径及其子路径上。