启动客户端

zkCli.sh -server master01:2181
help

查看znode节点

ls /
查看节点详细信息:ls -s /
查看节点状态:stat /sanguo

删除节点

delete /sanguo/weiguo
deleteall /sanguo/weiguo

节点类型

持久(Persistent)

客户端和服务器端断开连接后,创建的节点不删除
create /sanguo “diaochan”
临时节点:
get -s /sanguo
create -s /sanguo/weiguo “zhangliao”

短暂(Ephemeral)

客户端和服务器端断开连接后,创建的节点自己删除
create -e /sanguo/wuguo “zhouyu”
create -e -s /sanguo/wuguo “zhouyu”
说明:创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护
注意:在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

更新节点

set /sanguo/wuguo “simayi”

监听器

get -w /sanguo
ls -w /sanguo

分布式锁

官网地址:https://curator.apache.org/index.html
Curator 是一个专门解决分布式锁的框架,解决了原生 Java API 开发分布式遇到的问题。

  1. private CuratorFramework getCuratorFramework() {
  2. // 重试策略,初试时间 3 秒,重试 3 次
  3. RetryPolicy policy = new ExponentialBackoffRetry(3000, 3);
  4. // 通过工厂创建 Curator
  5. CuratorFramework client = CuratorFrameworkFactory.builder().connectString(ZkUtil.CONNECT_STRING)
  6. .connectionTimeoutMs(ZkUtil.SESSION_TIMEOUT).sessionTimeoutMs(ZkUtil.SESSION_TIMEOUT)
  7. .retryPolicy(policy).build();
  8. // 开启连接
  9. client.start();
  10. System.out.println("zookeeper 初始化完成...");
  11. return client;
  12. }
  13. private static final String ROOT_NODE = "/locks";
  14. public static void main(String[] args) {
  15. // 创建分布式锁 1
  16. final InterProcessLock lock1 = new InterProcessMutex(getCuratorFramework(), ROOT_NODE);
  17. // 创建分布式锁 2
  18. final InterProcessLock lock2 = new InterProcessMutex(getCuratorFramework(), ROOT_NODE);
  19. }