文章目录
1. Znode类型
1.1. 永久节点
1.2. 顺序节点
1.3. 临时节点
2. Znode属性
cZxid = 0x2
ctime = Sat Jul 27 13:52:22 CST 2019
mZxid = 0x2
mtime = Sat Jul 27 13:52:22 CST 2019
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
属性名 | 属性含义 |
---|---|
cZxid | Zxid zookeeper的事务id, cZxid指的是节点创建时的事务id. 不变. |
ctime | 节点的创建时间. 不变. |
mZxid | 节点最近一次修改的事务id. 包括对本节点数据的修改. 本节点acl的修改,子节点的增加删除以及子节点acl的修改都不会影响到该值. |
mtime | 节点最近一次修改的时间. |
pZxid | 对子节点最近的一次修改, 包括子节点的增加删除, 但是子节点的数据修改和acl权限控制,不会影响这个信息. |
cversion | 子节点的版本号, 对子节点的增加和删除操作, 版本号都会加1.但是子节点的数据和acl修改不会影响这个信息. |
dataVersion | 数据版本.本节点的数据信息每被修改一次, 加1 |
aclVersion | acl 版本号. acl指的是对改节点的访问权限, 每更改一次就加1 |
ephemeralOwner | ephemeral节点所属的客户端的sessionId. 如果是persist 节点, 则为0 |
dataLength | 数据长度 |
numChildren | 子节点的数量 |
3. ACL介绍
此处重点说一下acl,acl由大部分组成:1为scheme,2为user,3为permission,一般情况下表示为scheme?permissions。
其中scheme和id是相关的,下面将scheme和id一起说明。
3.1. scheme和id
3.1.1. world
它下面只有一个id, 叫anyone world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的
3.1.2. auth
没有id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication)
3.2.3. digest
它对应的id为username:BASE64(SHA1(password)),它需要先通过username:password形式的authentication
3.2.4. ip
ip: 它对应的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段
super: 在这种scheme情况下,对应的id拥有超级权限,可以做任何事情(cdrwa)
3.2. permissions
CREATE©: 创建权限,可以在在当前node下创建child node
DELETE(d): 删除权限,可以删除当前的node
READ®: 读权限,可以获取当前node的数据,可以list当前node所有的child nodes
WRITE(w): 写权限,可以向当前node写数据
ADMIN(a): 管理权限,可以设置当前node的permission
综上,一个简单使用setAcl命令,则可以为:
setAcl /zookeeper/node1 world:anyone:cdrw