本文为博主原创,未经允许不得转载:
目录:
1. znode 节点特性
2. zookeeper 的四种节点类型及适用场景分析
3. zookeeper 客户端常用操作命令
4. znode 数据增删改查
5. 节点属性查看
6. 节点的监听
7. acl权限设置
1. znode 节点特性
zookeeper 中节点叫znode存储结构上跟文件系统类似,以树级结构进行存储。不同之外在于znode没有目录的概念,不能执行类似cd之类的命令。
znode结点属性如下:
1 path:唯一路径
2 childNode:子节点
3 stat:状态属性
4 type:节点类型
2. zookeeper 的四种节点类型及适用场景分析:
类型 | 描述 | 命令 | 适用场景 |
PERSISTENT | 持久节点 | create /test |
|
PERSISTENT_SEQUENTIAL | 持久顺序节点 | create -s /test | 适合用于分布式锁、分布式选举等场景 |
EPHEMERAL | 临时节点(不可在拥有子节点) | create -e /temp
| 适用于心跳,服务发现等场景 |
EPHEMERAL_SEQUENTIAL | 临时顺序节点(不可在拥有子节点) | create -e -s /temp/seq
| |
3. zookeeper 客户端常用操作命令:
#创建节点
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
#删除节点,(不能存在子节点)
deleteall path
#查看节点数据 -s 包含节点状态 -w 添加监听
get [-s] [-w] path
#查看执行的历史记录
history
#设置值
set [-s] [-v version] path data
#为节点设置ACL权限
setAcl [-s] [-v version] [-R] path acl
#查看节点状态 -w 添加监听
stat [-w] path
创建一个临时顺序节点,并查看:
临时节点在会话关闭的时候即会删除。
4. znode 数据增删改查:
# 列出子节点
ls /
#创建节点
create /test "test is good man"
# 查看节点
get /test
# 创建子节点
create /test/sex "man"
# 设置节点值
set /test/sex "man"
# 删除节点
delete /test/sex
# 删除所有节点 包括子节点
deleteall /test
5. 节点属性查看
# 查看节点属性
stat /test
其属性说明如下:
#创建节点的事物ID
cZxid = 0x385
#创建时间
ctime = Wed Jul 21 22:37:01 CST 2021
#修改节点的事物ID
mZxid = 0x385
#最后修改时间
mtime = Wed Jul 21 22:37:01 CST 2021
# 子节点变更的事物ID
pZxid = 0x385
#这表示对此znode的子节点进行的更改次数(不包括子节点)
cversion = 0
# 数据版本,变更次数
dataVersion = 0
#权限版本,变更次数
aclVersion = 0
#临时节点所属会话ID
ephemeralOwner = 0x0
#数据长度
dataLength = 17
#子节点数(不包括子子节点)
numChildren = 0
6. 节点的监听:
客户添加
命令 | 描述 |
ls -w path | 监听子节点的变化(增,删) |
get -w path | 监听节点数据的变化 |
stat -w path | 监听节点属性的变化 |
printwatches on|off | 触发监听后,是否打印监听事件(默认on) |
7. acl权限设置
ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限。ZooKeeper使用ACL来控制对其znode的防问。基于scheme:id:permission的方式
、id模式对应值、permission即具体的增删改权限位。
scheme:认证模型
方案 | 描述 |
world | 开放模式,world表示全世界都可以访问(这是默认设置) |
ip | ip模式,限定客户端IP防问 |
auth | 用户密码认证模式,只有在会话中添加了认证才可以防问 |
digest | 与auth类似,区别在于auth用明文密码,而digest 用sha-1+base64加密后的密码。在实际使用中digest 更常见。 |
permission权限位
权限位 | 权限 | 描述 |
c | CREATE | 可以创建子节点 |
d | DELETE | 可以删除子节点(仅下一级节点) |
r | READ | 可以读取节点数据及显示子节点列表 |
w | WRITE | 可以设置节点数据 |
a | ADMIN | 可以设置节点访问控制列表权限 |
acl 相关命令:
命令 | 使用方式 | 描述 |
getAcl | getAcl <path> | 读取ACL权限 |
setAcl | setAcl <path> <acl> | 设置ACL权限 |
addauth | addauth <scheme> <auth> | 添加认证用户 |
查看所有跟节点,并查看controller 节点的acl 权限
设置 节点 acl 权限