zk如何保存数据? 树结构保存,默认根节点是/
包含了四个部分
- data:保存数据acl:权限 定义了什么样的用户能够操作这个节点,切能够进行怎么样的操作
c:创建 w:更新 r:读 d:删除 a:管理员stat:描述当前znode的元数据child:当前节点的子节点
举例
#创建test1节点 create /test1 #创建test1下sub1节点 赋值sub1=abc create /test1/sub1 abc #获取sub1节点是数据 get /test1/sub1 #sub1结果 abc
查看数据结构
#查看节点信息 get -s /test1 #节点的值 null #创建节点的事务id cZxid = 0x3 #节点创建时间 ctime = Sun Jan 23 03:37:42 CST 2022 #修改节点的事务id mZxid = 0x3 #节点最近修改的时间 mtime = Sun Jan 23 03:37:42 CST 2022 #添加和删除子节点的事务id pZxid = 0x4 #子节点的更改次数 cversion = 1 #节点内数据的版本 dataVersion = 0 #此节点的权限版本 aclVersion = 0 #如果当前节点是临时节点,该值是当前节点所有者的sessionid,如果不是临时节点该值为0 ephemeralOwner = 0x0 #节点内数据长度 dataLength = 0 #该节点的子节点个数 numChildren = 1
znode类型有哪些
create 创建持久节点
create -s 持久序号节点并发很严重的情况下,应用场景分布式锁
[zk: localhost:2181(CONNECTED) 8] create -s /test1 Created /test10000000008 [zk: localhost:2181(CONNECTED) 9] create -s /test1 Created /test10000000009 [zk: localhost:2181(CONNECTED) 10] create -s /test1 Created /test10000000010 [zk: localhost:2181(CONNECTED) 11] ls / [test1, test10000000008, test10000000009, test10000000010, test2, test20000000002, test20000000003, test20000000004, test20000000005, test20000000006, zookeeper] [zk: localhost:2181(CONNECTED) 12]
create -e 临时序号节点,只保留在当前会话,会话断开会删除临时节点,应用场景服务注册与发现
create -e -s 临时序号节点,应用场景临时分布式锁
create -c container容器节点,当容器节点内没子节点时候,默认60s后删除此节点
TTL节点可以指定到期时间,到期后删除



