客户端服务器命令
切换至zookeeper安装目录下的bin目录输入以下命令启动服务器或者客户端
- 启动ZK服务: ./zkServer.sh start
- 查看ZK服务状态: ./zkServer.sh status
- 停止ZK服务: ./zkServer.sh stop>
- 重启ZK服务: ./zkServer.sh restart
- 连接内部客户端: ./zkCli.sh或者./zkCli.sh -server 127.0.0.1(指定连接服务器IP):2181
节点属性
cZxid
:当前数据结点创建时的事务ID——针对于zookeeper
数据结点的管理:我们对结点数据的一些写操作都会导致zookeeper
自动地为我们去开启一个事务,并且自动地去为每一个事务维护一个事务ID
ctime
:当前数据结点创建时的时间mZxid
:当前数据结点最后一次更新时的事务IDmtime
:当前数据结点最后一次更新时的时间pZxid
:当前数据节点最后一次修改其子节点**更改的zxid
。修改指(增加子节点、删除子节点),并不指其子节点的数据发生改变;cversion
:当前数据节点对应子结点的更改次数dataVersion
:当前结点数据的发生更改的次数aclVersion
:当前结点的ACL更改次数——类似linux
的权限列表,维护的是当前结点的权限列表被修改的次数ephemeralOwner
:如果结点是临时结点,则表示创建该结点的会话的SessionID
;如果是持久结点,该属性值为0dataLength
:当前节点的数据内容长度numChildren
:当前数据结点的子结点个数
新增,查询结点
- 新增命令:create [-s] [-e] path data其中 -s 为有序结点,-e 临时结点(默认是持久结点)
- 查询命令:get [-s] [-w] path-s 查看节点所有信息:数据信息+节点属性值 -w 查看节点数据信息
修改节点
- 修改命令:set [-s] [-v version] path data可以直接进行修改;也可以选择使用版本号 -v + 版本号,类似乐观锁原理
删除节点
- 删除单个节点:delete [-v version] path,可以直接删除,也可以指定版本号删除,此命令只能删除单个节点,如果存在子节点,则需要依次删除子节点
- 删除节点及子节点:deleteall path,直接删除指定的所有节点
查看子节点列表
- ls [-s] [-w] [-R] path
- ls2 path [watch]
查看节点状态
- 使用stat命令查看节点状态,与get命令的区别是此命令不返回数据信息
监听器
- 使用 get [-s] [-w] path注册的监听器能够在结点内容发生改变的时候,向客户端发出通知。需要注意的是zookeeper的触发器是一次性的(One-time trigger),即触发一次后就会立即失效。
权限控制
zookeeper类似文件系统,client可以创建结点、更新结点、删除结点,那么如何做到结点的权限控制呢?zookeeper的 access control list 访问控制列表可以做到这一点。acl权限控制,使用scheme:id:permission来标识,主要涵盖3个方面:
1.权限模式(scheme):授权的策略
2.授权对象(id):授权的对象
3.权限(permission):授予的权限权限模式
| 方案 | 描述 | | — | — | | world | 只有一个用户:anyone,代表登录zookeeper所有人(默认) | | ip | 对客户端使用IP地址认证 | | auth | 使用已添加认证的用户认证 | | digest | 使用"用户名:密码"方式认证 |
授权对象
- 给谁授予权限
- 授权对象ID是指,权限赋予的实体,例如:IP地址或用户
权限
- create、delete、read、writer、admin也就是 增、删、查、改、管理权限,这5种权限简写为 c d r w a,注意:这五种权限中,有的权限并不是对结点自身操作的例如:delete是指对子结点 的删除权限。可以试图删除父结点,但是子结点必须删除干净,所以delete的权限也是很有用的
权限 | ACL简写 | 描述 |
---|---|---|
create | c | 可以创建子结点 |
delete | d | 可以删除子结点(仅下一级结点) |
read | r | 可以读取结点数据以及显示子结点列表 |
write | w | 可以设置结点数据 |
admin | a | 可以设置结点访问控制权限列表 |
命令 | 使用方式 | 描述 |
---|---|---|
getAcl | getAcl | 读取ACL权限 |
setAcl | setAcl | 设置ACL权限 |
addauth | addauth | 添加认证用户 |