zookeeper 原生 api 操作
发布于: 15 分钟前
pom 文件引入
<dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> </dependency></dependencies>
复制代码
几个状态和概念节点创建的权限信息 ACL 参数的类型
ANYONE_ID_UNSAFE : 表示任何⼈
AUTH_IDS :此 ID 仅可⽤于设置 ACL。它将被客户机验证的 ID 替换。
OPEN_ACL_UNSAFE :这是⼀个完全开放的 ACL(常⽤)-->world:anyone
CREATOR_ALL_ACL :此 ACL 授予创建者身份验证 ID 的所有权限节点的几种类型的枚举
PERSISTENT:持久节点
PERSISTENT_SEQUENTIAL:持久顺序节点
EPHEMERAL:临时节点
EPHEMERAL_SEQUENTIAL:临时顺序节点
zookeeper 原生 api 创建会话操作
public class CreateSession implements Watcher { private static CountDownLatch countDownLatch = new CountDownLatch(1);
public static void main(String[] args) throws IOException, InterruptedException { ZooKeeper zooKeeper = new ZooKeeper("119.45.52.68:2181",6000,new CreateSession()); System.out.println(zooKeeper.getState()); countDownLatch.await(); System.out.println("zk session create success");
} @Override public void process(WatchedEvent watchedEvent) { if (watchedEvent.getState()==Event.KeeperState.SyncConnected){ countDownLatch.countDown(); } }}
复制代码
正常创建回话
zookeeper 原生 api 获取信息操作
public class getNoetNode implements Watcher {
private static ZooKeeper zooKeeper;
public static void main(String[] args) throws InterruptedException, IOException { zooKeeper = new ZooKeeper("119.45.52.68:2181",10000,new getNoetNode()); //countDownLatch.await(); Thread.sleep(Integer.MAX_VALUE); }
@Override public void process(WatchedEvent event) { if(event.getType() ==Event.EventType.NodeChildrenChanged){//再次获取子节点数据,监听子节点变化 try { List<String> children = zooKeeper.getChildren(event.getPath(), true); System.out.println(children); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }
//当连接创建了,服务端发送给客户端SyncConnected事件 if(event.getState() == Event.KeeperState.SyncConnected){ try {//调⽤获取单个节点数据⽅法 getNodeData(); getChildren(); } catch (Exception e) { e.printStackTrace(); } } System.out.println(); }
private static void getNodeData() throws Exception { byte[] data = zooKeeper.getData("/persistent/children", true, null); System.out.println(new String(data,"utf-8")); }
public static void getChildren() throws Exception{ List<String> childrens = zooKeeper.getChildren("persistent",true); System.out.println(childrens);
}}
复制代码
zookeeper 原生 api 更新节点信息
public class UpdateNode implements Watcher {
private static ZooKeeper zooKeeper;
public static void main(String[] args) throws Exception{ zooKeeper = new ZooKeeper("119.45.52.68:2181",6000,new UpdateNode()); Thread.sleep(Integer.MAX_VALUE);
} @Override public void process(WatchedEvent event) { try { byte[] before = zooKeeper.getData("/persistent/children",false,null); System.out.println("修改前的值"+new String(before)); Stat stat = zooKeeper.setData("/persistent","客户端修改的内容".getBytes(),-1); System.out.println(stat); byte[] after = zooKeeper.getData("/persistent/children",false,null); System.out.println("修改后的值"+new String(after)); }catch (Exception e){ e.printStackTrace(); }
}}
复制代码
zookeeper 原生 api 删除节点信息
public class DeleteNode implements Watcher { private static ZooKeeper zooKeeper; public static void main(String[] args) throws Exception{ zooKeeper = new ZooKeeper("119.45.52.68:2181",6000,new UpdateNode()); Thread.sleep(Integer.MAX_VALUE); } @Override public void process(WatchedEvent event) { try { Stat exists = zooKeeper.exists("/persistent/children", false); System.out.println(exists == null ? "该节点不存在":"该节点存在"); zooKeeper.delete("/persistent/children",-1); Stat exists2 = zooKeeper.exists("/persistent/children", false); System.out.println(exists2 == null ? "该节点不存在":"该节点存在"); }catch (Exception e){ e.printStackTrace(); }
}}
复制代码
划线
评论
复制
发布于: 15 分钟前阅读数: 2
赵镇
关注
还未添加个人签名 2017.12.20 加入
还未添加个人简介











评论