启动客户端
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名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护
注意:在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序
更新节点
监听器
分布式锁
官网地址:https://curator.apache.org/index.html
Curator 是一个专门解决分布式锁的框架,解决了原生 Java API 开发分布式遇到的问题。
private CuratorFramework getCuratorFramework() {
// 重试策略,初试时间 3 秒,重试 3 次
RetryPolicy policy = new ExponentialBackoffRetry(3000, 3);
// 通过工厂创建 Curator
CuratorFramework client = CuratorFrameworkFactory.builder().connectString(ZkUtil.CONNECT_STRING)
.connectionTimeoutMs(ZkUtil.SESSION_TIMEOUT).sessionTimeoutMs(ZkUtil.SESSION_TIMEOUT)
.retryPolicy(policy).build();
// 开启连接
client.start();
System.out.println("zookeeper 初始化完成...");
return client;
}
private static final String ROOT_NODE = "/locks";
public static void main(String[] args) {
// 创建分布式锁 1
final InterProcessLock lock1 = new InterProcessMutex(getCuratorFramework(), ROOT_NODE);
// 创建分布式锁 2
final InterProcessLock lock2 = new InterProcessMutex(getCuratorFramework(), ROOT_NODE);
}