Zookeeper节点管理指南
Zookeeper的节点(称为Znode)是其数据模型的核心,管理操作主要包括增删改查、节点特性控制、ACL权限管理及Watcher监听等,以下是具体说明:
创建节点时需指定路径、数据及类型(持久/临时/顺序),常用命令格式:
create [-s] [-e] path data [acl]
-s/-e参数,节点会一直存在,直到显式删除(如create /persistent "data")。-e参数,节点与客户端会话绑定,会话过期或客户端断开后自动删除(如create -e /ephemeral "temp_data")。-s参数,节点名会附加10位递增序号(如create -s /sequence "seq_data"生成/sequence0000000001),适用于分布式队列、选主等场景。acl参数控制访问权限(如create /secure "data" world:anyone:cdrwa允许所有用户读写)。get命令,可添加-w监听数据变化(一次性触发):get [-w] path(如get /persistent返回数据及元信息)。ls命令,-w监听子节点变化,-s显示元信息:ls [-s] [-w] path(如ls /查看根节点下的子节点)。stat命令,返回节点的cZxid(创建事务ID)、mtime(修改时间)、dataVersion(数据版本)等元信息(如stat /persistent)。使用set命令修改节点数据,支持版本控制(乐观锁机制):
set [-s] [-v version] path data
-s:显示更新后的节点状态;-v version:指定数据版本号,若版本不匹配则更新失败(如set -v 1 /persistent "new_data",若当前版本不是1则拒绝修改)。delete命令,需确保节点无子节点,可指定版本号:delete [-v version] path(如delete /ephemeral,若版本不匹配则删除失败)。deleteall命令(替代已弃用的rmr),可删除节点及其所有子节点(如deleteall /parent)。keepalive机制维持会话,客户端需定期发送心跳(默认会话超时时间为2倍tickTime,可在zoo.cfg中配置)。使用setAcl设置节点权限,getAcl查看权限,支持三种授权模式:
world:anyone:cdrwa允许所有用户读写创建删除);auth:user:password:cdrwa,需先通过addauth认证);digest:user:base64(SHA1(password)):cdrwa,更安全)。setAcl /secure digest:user:base64(SHA1(123456)):cdrwa。Watcher是Zookeeper的核心特性,用于监听节点变化(数据/子节点/节点存在性),触发后需重新设置:
get -w path(如get -w /persistent,当/persistent数据变化时,客户端收到通知);ls -w path(如ls -w /parent,当/parent的子节点增加/删除时触发);exists -w path(如exists -w /nonexistent,当/nonexistent节点创建或删除时触发)。以上操作覆盖了Zookeeper节点管理的核心场景,通过命令行工具(zkCli.sh)或API可实现分布式系统的协调与管理。