连接
CountDownLatch cdl = new CountDownLatch(1); 初始化线程为1
countDownLatch 闭锁(线程递减锁) countDown() await() 对线程进行计数,当计数归0会放开阻塞重新计数
ZooKeeper zk = new ZooKeeper("IP:2181" ,会话超时时间(毫秒),new Watcher(){//监控者,监控连接状态
public void process(WatchedEvent event){
if(event.getStatus() == KeeperState.SyncConnected){
System.out.println("连接成功");
cdl.coundown(); 线程数减一
}}} );
cdl.await(); //放开阻塞状态
使用
创建节点 zk.create("/节点名",“节点值必须要写值”.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
节点类型:持久节点 PERSISTENT
临时节点 EPHEMERAL
持久顺序节点 PERSISTENT_SEQUENTIAL
临时顺序节点 EPHEMERAL_SEQUENTIAL
更新节点 Stat s = zk.setData("/节点名",“更新的值”.getBytes(),0); 返回节点信息 用Stat接收
获取节点数据 byte[] data = zk.getData("/节点名称", null, new Stat()); null是watch监控者,没有监控者为空
删除节点 zk.delete("/节点名",0); 0是数据版本 如果相同则删除,否则不做处理 -1是强制删除
判断节点是否存在 zk.exists("节点名",null); null是watch null是没有
获取子节点 List<String> nodes = zk.getChildren("/" ,null); 遍历就可以看到结果