zookeeper的一些基本操作

1. 连接节点,用zookeeper自带的客户端连接工具连接

zkCli.sh -server ip 连接ip所在的server。如果只执行zkCli.sh,默认只会连接本地的2181端口。

2. 创建节点的基本操作

create -s -e path data acl

  1. -s 表示序列化,-e 表示临时节点,path 表示路径,data表示数据,acl表示权限控制
  2. 不加-s,-e创建的节点表示创建的为非序列化永久节点
  3. 不加-s,加-e选项创建的节点为临时节点,断开连接后,几秒钟,集群中的临时节点会消失
  4. 加-s,不加-e创建的节点为序列化节点,如果,创建序列化节点的过程
[zk: localhost:2181(CONNECTED) 18] create -s /a 123
Created /a0000000001

明显,目录/a变成/a0000000001

3. 读取节点

ls 命令可以列出Zookeeper指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点
get 命令可以获取Zookeeper指定节点的数据内容和属性信息
新版本zookeeper使用命令:ls -s path 取代ls2命令。

4. 更新节点

set path data [version]
data就是要更新的新内容,version表示数据版本。

// 获取节点数据
[zk: localhost:2181(CONNECTED) 20] get /hellozk
123
// 查看节点信息
[zk: localhost:2181(CONNECTED) 21] ls -s /hellozk
[]
cZxid = 0x200000004
ctime = Wed Jun 03 16:35:16 CST 2020
mZxid = 0x200000004
mtime = Wed Jun 03 16:35:16 CST 2020
pZxid = 0x200000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
// 修改数据
[zk: localhost:2181(CONNECTED) 22] set /hellozk 456
// 查看节点信息
[zk: localhost:2181(CONNECTED) 23] ls -s /hellozk
[]
cZxid = 0x200000004
ctime = Wed Jun 03 16:35:16 CST 2020
mZxid = 0x200000008  // 事物id发生变化
mtime = Wed Jun 03 17:05:00 CST 2020
pZxid = 0x200000004
cversion = 0
dataVersion = 1               // 数据修改过后 dataVersion的只发生变化
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

5. 删除节点

delete path [version] 若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点
Rmr path 可以递归删除节点

6. quota

setquota -n|-b val path 对节点增加限制
n:表示子节点的最大个数
b:表示数据的最大长度
val:子节点最大个数或者数值的最大长度
path:节点路径

实验

// 创建/testquota并设置数据为123456
[zk: localhost:2181(CONNECTED) 27] create /testquota 123456
Created /testquota
// 列出对/testquota节点增加的限制,显示无限制
[zk: localhost:2181(CONNECTED) 28] listquota /testquota 
absolute path is /zookeeper/quota/testquota/zookeeper_limits
quota for /testquota does not exist.
// 设置对节点/testquota增加限制节点数为3的限制
[zk: localhost:2181(CONNECTED) 29] setquota -n 3 /testquota
// 列出当前节点数限制为3,长度限制-1表示不限制长度,当前状态节点数量为1,显然包含自己
[zk: localhost:2181(CONNECTED) 30] listquota /testquota 
absolute path is /zookeeper/quota/testquota/zookeeper_limits
Output quota for /testquota count=3,bytes=-1
Output stat for /testquota count=1,bytes=6
// 接连创建了3个,都可以成功,显然超出限制
[zk: localhost:2181(CONNECTED) 32] create /testquota/a a
Created /testquota/a
[zk: localhost:2181(CONNECTED) 33] create /testquota/b b
Created /testquota/b
[zk: localhost:2181(CONNECTED) 34] create /testquota/c c
Created /testquota/c
// 查看状态 数量限制为3但是实际数量为4
[zk: localhost:2181(CONNECTED) 35] listquota /testquota
absolute path is /zookeeper/quota/testquota/zookeeper_limits
Output quota for /testquota count=3,bytes=-1
Output stat for /testquota count=4,bytes=9
// 后台日志显示一条警告显示
后台日志信息:2020-06-03 17:28:33,981 [myid:3] - WARN  [CommitProcessor:3:DataTree@412] - Quota exceeded: /testquota count=4 limit=3
// -n 限制
[zk: localhost:2181(CONNECTED) 37] delquota -n /testquota
// 查看quota,变为数量无限制,长度无限制
[zk: localhost:2181(CONNECTED) 38] listquota /testquota
absolute path is /zookeeper/quota/testquota/zookeeper_limits
Output quota for /testquota count=-1,bytes=-1
Output stat for /testquota count=4,bytes=9

结论,数量限制为软限制,超过后只有警告,没有实际限制

7. history 命令

列出历史操作
29 - setquota -n 3 /testquota
30 - listquota /testquota
31 - ls /testquota
32 - create /testquota/a a
33 - create /testquota/b b
34 - create /testquota/c c
35 - listquota /testquota
36 - delete -n /testquota
37 - delquota -n /testquota
38 - listquota /testquota
39 - history

8. redo命令

该命令可以重新执行指定命令编号的历史命令,命令编号可以通过history查看

你可能感兴趣的:(zookeeper的一些基本操作)