ZooKeeper 持久化节点操作指南
一 概念与特点
create [-s] [-e] path data(不带 -e 即为持久节点;带 -s 为有序)。二 Shell 常用操作
zkServer.sh start(集群可用 status 查看状态)zkCli.sh -server <host:2181>create /app "hello"create -s /app/seq "item"(生成如 /app/seq0000000001)get /appget -s /app(含 cZxid、ctime、mZxid、mtime、dataVersion、cversion、numChildren 等)ls /app;递归查看:ls -R /appset /app "world"set /app "world" <version>(使用 get -s 获取当前 dataVersion)delete /app/seq0000000001deleteall /app(新版中 rmr 已被弃用,建议使用 deleteall)ls -w /appget -w /appquit三 Java API 示例
zk.create("/myNode", "My data".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);zk.getData("/myNode", false, stat)zk.setData("/myNode", "updated".getBytes(), stat.getVersion());exists 或 getData 返回的 Stat,用于实现乐观锁。四 注意事项
deleteall 递归删除。set path data [version] 时,若指定了 version,需与服务器当前 dataVersion 一致,否则更新失败(乐观锁)。ls -w,观察数据变化可用 get -w;事件触发一次后即失效,需要重新注册。ls2 已被弃用,建议使用 ls -s path 查看详细信息。