1、结点类型
1、持久节点:指节点创建后,就一直存在,直到有删除操作来主动清除这个节点
2、临时节点:临时节点的生命周期和客户端会话绑定。如果客户端会话失效,那么这个
节点就会被自动清除。临时节点下不能创建子节点 create -e /yu 内容
3、持久顺序节点:基本特性和持久节点基本一致。create -s /yu 内容
4、临时顺序节点:类似临时和顺序节点
zookeeper默认对每个结点最大数据量上线是1M
2、Stat结构
zookeeper命名空间中的每一个znode都有一个与之相关的stat结构,znode中的stat结构中的字段如下:
- cZxid:创建znode的事务ID
- mZxid:最后修改znode的事务ID
- pZxid:最后修改添加或者删除子节点的事务ID
- ctime:以毫秒为单位的创建znode的时间
- mtime:以毫秒为单位最近修改znode的时间
- dataVersion:对此znode的数据所作的修改次数
- cversion:对此znode的子节点进行的更改次数
- aclVersion:对此znode的acl更改次数
- ephemeralOwner:如果znode是ephemeral类型的结点,则这是znode所有者的sessionID,如果znode不是ephemeral类型的结点,则该字段设置为零
- dataLength:这是znode数据字段的长度
- numChildren:这表示是znode的子节点的数量
3、watch
一个zk的结点可以被监控,包括这个目录中存储的数据修改、子节点变换,一点变化可
以通知设置监控的客户端。这个功能是zookeeper对于应用最重要的一个特征,通过这
个特征可以实现的功能包括配置的集中管理、集群管理、分布式锁等。
watch的官方说明:一个watch事件是一个一次性的触发器,当被设置了watch的数据发
生了改变的时候,则服务器将这个数据发送给设置了watch的的客户端,以便通知他们
4、常用命令
1)创建节点(znode)
create /path data 默认创建持久节点
create -s /path data 创建顺序节点
create -e /path data 创建临时节点
2)获取数据
get /path
get /path0000000018 访问顺序节点必须输入完整路径
3)设置数据
完成此操作后,可以使用get CLI命令检查数据
set /path /data
4)创建子节点
create /parent/sub/path /data
5)列出子节点
ls /path
6)检查状态
stat /path
7)移除节点
移除节点并且递归移除所有子节点
rmr /path
delete /path 删除没有子节点的节点
5、ACL
zk通过ACL机制解决访问权限问题
- zk的权限控制是基于每个znode节点的,需要对每个节点设置权限
- 每个节点支持多种权限控制方案和多个权限
- 子节点不会继承父节点的权限,客户端无权访问某节点,但可以访问它的子节点
ACL权限控制使用【schema:id:permission】来标识: - 权限模式(schema): 鉴权的策略
- 授权对象(id)
- 权限(permission)
schema
world:只有一个用户anyone,代表所有人(默认)
ip:使用IP地址认证
auth:使用已添加认证的用户认证
digest:使用用户名:密码 方式认证
id
world:只有一个id,anyone
ip:通常是一个ip地址或者地址段
auth:用户名
digest:自定义
权限
create 简写为c,可以创建子节点
delete 简写为d 可以删除子节点
read 简写为r 可以读取节点数据及显示子节点列表
write 简写为w 可以设置节点数据
admin 简写为a 可以设置
查看ACL
getAcl /parent
设置ACL
setAcl /parent world:anyone:wa
添加用户
addauth digest zhangsan:123456
设置权限
setAcl /parent auth:zhangsan:123456:rdwca