Java API操作ZK node
来源:互联网 发布:线正数据采集处理系统 编辑:程序博客网 时间:2024/06/06 17:57
创建会话
- 建立简单连接
/** * 测试创建Zk会话 * Created by liuhuichao on 2017/7/25. */public class ZooKeeper_Constructor_Usage_Simple implements Watcher { private static CountDownLatch connectedSemaphore=new CountDownLatch(1); public static void main(String[] args) throws Exception{ ZooKeeper zk=new ZooKeeper("192.168.99.215:2181",5000,new ZooKeeper_Constructor_Usage_Simple()); System.out.println(zk.getState()); connectedSemaphore.await(); System.out.println("zk session established"); } /** * 处理来自ZK服务端的watcher通知 * @param watchedEvent */ @Override public void process(WatchedEvent watchedEvent) { System.out.println("receive watched event:"+watchedEvent); if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ connectedSemaphore.countDown();//解除等待阻塞 } }}
- 复用会话
/** * 复用sessionId和sessionPassword的会话 * Created by liuhuichao on 2017/7/25. */public class ZooKeeper_Constructor_Usage_With_sid_password implements Watcher { private static CountDownLatch connectedSemaphore=new CountDownLatch(1); @Override public void process(WatchedEvent watchedEvent) { System.out.println("receive watched event:"+watchedEvent); if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ connectedSemaphore.countDown(); } } public static void main(String[] args) throws Exception{ ZooKeeper zooKeeper=new ZooKeeper("lhc-centos0:2181",5000,new ZooKeeper_Constructor_Usage_With_sid_password()); connectedSemaphore.await(); long sessionId=zooKeeper.getSessionId(); byte[] password=zooKeeper.getSessionPasswd(); /**使用错误的sessionID跟sessionPwd连连接测试[192.168.99.215 lhc-centos0]**/ ZooKeeper zkWrong=new ZooKeeper("lhc-centos0:2181",5000,new ZooKeeper_Constructor_Usage_With_sid_password(),1l,"lhc".getBytes()); /**使用正确的来进行连接**/ ZooKeeper zkTrue=new ZooKeeper("lhc-centos0:2181",5000,new ZooKeeper_Constructor_Usage_With_sid_password(),sessionId,password); Thread.sleep(Integer.MAX_VALUE); }}
创建节点
- 使用同步API创建节点
/** * 使用同步API创建一个节点 * Created by liuhuichao on 2017/7/25. */public class ZooKeeper_Create_API_Sync_Usage implements Watcher { private static CountDownLatch connectedSemaphore=new CountDownLatch(1); @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ connectedSemaphore.countDown(); } } public static void main(String[] args) throws Exception{ ZooKeeper zooKeeper=new ZooKeeper("192.168.99.215:2181",5000,new ZooKeeper_Create_API_Sync_Usage()); connectedSemaphore.await(); String path1=zooKeeper.create("/zk-test1","lhc".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);//临时结点 System.out.println(path1+" 创建成功!"); String path2=zooKeeper.create("/zk-test2","lllhhhhhhhhhhhhhhhhc".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL); System.out.println(path2+" 创建成功!"); }}
- 使用异步API创建一个节点
/** * 使用异步API创建一个节点 * Created by liuhuichao on 2017/7/25. */public class ZooKeeper_Create_API_ASync_Usage implements Watcher{ private static CountDownLatch connectedSamphore=new CountDownLatch(1); @Override public void process(WatchedEvent watchedEvent) { if(watchedEvent.getState()== Event.KeeperState.SyncConnected){ connectedSamphore.countDown(); } } public static void main(String[] args) throws Exception{ ZooKeeper zk1=new ZooKeeper("lhc-centos0:2181",5000,new ZooKeeper_Create_API_ASync_Usage()); connectedSamphore.await(); zk1.create("/zk-test-1","".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT,new IStringCallBack(),"i am a context"); zk1.create("/zk-test-2","".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT,new IStringCallBack(),"i am a context"); zk1.create("/zk-test-3","".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT_SEQUENTIAL,new IStringCallBack(),"i am a context"); Thread.sleep(Integer.MAX_VALUE); }}/** * Created by liuhuichao on 2017/7/26. */public class IStringCallBack implements AsyncCallback.StringCallback{ @Override public void processResult(int rc, String path, Object ctx, String name) { System.out.println("result:"+rc+"; path="+path+" ctx="+ctx+" name = "+name); }}
删除节点
/** * 删除zk的持久结点 * Created by liuhuichao on 2017/7/26. */public class ZooKeeperDeleteNode implements Watcher { private static CountDownLatch conntedSamphore=new CountDownLatch(1); @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ conntedSamphore.countDown(); } } public static void main(String[] args) throws Exception{ /**同步删除节点**/ ZooKeeper zooKeeper=new ZooKeeper("lhc-centos0:2181",5000,new ZooKeeperDeleteNode()); conntedSamphore.await(); zooKeeper.delete("/zk-test-30000000014",0); }}
读取数据
- 使用同步API获取子节点列表
/** *获取结点-同步 * Created by liuhuichao on 2017/7/26. */public class ZooKeeper_GetChildren_API_Sync_Usage implements Watcher { private static CountDownLatch conntedSamphore=new CountDownLatch(1); private static ZooKeeper zooKeeper=null; @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ conntedSamphore.countDown(); }else if(watchedEvent.getType()== Event.EventType.NodeChildrenChanged){ try { System.out.println("--------------------------------------reget children:"+zooKeeper.getChildren(watchedEvent.getPath(),true)); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) throws Exception{ String path="/zk-test-1"; zooKeeper=new ZooKeeper("lhc-centos0:2181",5000,new ZooKeeper_GetChildren_API_Sync_Usage()); conntedSamphore.await(); zooKeeper.create(path+"/test1","".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL); List<String> childrenList=zooKeeper.getChildren(path,true); System.out.println(childrenList); zooKeeper.create(path+"/test2","".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL); Thread.sleep(Integer.MAX_VALUE); }}
- 使用异步API获取子节点列表
** * 异步获取结点 * Created by liuhuichao on 2017/7/26. */public class ZooKeeper_GetChildren_API_ASync_Usage implements Watcher { private static CountDownLatch connectedSemphore=new CountDownLatch(1); private static ZooKeeper zk=null; @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ connectedSemphore.countDown(); }else if(watchedEvent.getType()== Event.EventType.NodeChildrenChanged){ try { System.out.println("node changed===="+zk.getChildren(watchedEvent.getPath(),true)); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) throws Exception{ String path="/zk-test-1"; zk=new ZooKeeper("lhc-centos0:2181",5000,new ZooKeeper_GetChildren_API_ASync_Usage()); connectedSemphore.await(); zk.create(path+"/test3","".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); zk.getChildren(path,true,new ICChild2Callback(),null); Thread.sleep(Integer.MAX_VALUE); }}/** * 异步获取结点回调接口 * Created by liuhuichao on 2017/7/26. */public class ICChild2Callback implements AsyncCallback.Children2Callback{ @Override public void processResult(int rc, String path, Object ctx, List<String> children, Stat stat) { System.out.println("get children zonde result:[reponse code:"+rc+" path="+path+" ctx="+ctx+" childrenlist="+children+" stat="+stat); }}
- 使用同步API获取结点数据
/** * * 同步获取数据 * Created by liuhuichao on 2017/7/27. */public class GetData_API_Sync_Usage implements Watcher{ private static CountDownLatch conntedSamphore=new CountDownLatch(1); private static ZooKeeper zk=null; private static Stat stat=new Stat(); @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ conntedSamphore.countDown(); }else if(watchedEvent.getType()== Event.EventType.NodeCreated){ System.out.println("node changed:"+watchedEvent.getPath()); } } public static void main(String[] args) throws Exception{ String path="/test-1"; zk =new ZooKeeper("rc-zkp-datn-rse-nmg-ooz-woasis:2181",5000,new GetData_API_Sync_Usage()); conntedSamphore.await(); System.out.println("zk-19 连接成功!"); //zk.create(path+"/lhc", "".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); List<String> children=zk.getChildren(path,new GetData_API_Sync_Usage()); System.out.println("children node:"+children); zk.setData(path+"/lhc","memeda".getBytes(),-1); byte[] nodeValue=zk.getData(path+"/lhc",true,stat); System.out.println(new String(nodeValue)); }}
- 使用异步API获取结点数据
/** * * 同步/异步获取数据 * Created by liuhuichao on 2017/7/27. */public class GetData_API_Sync_Usage implements Watcher{ private static CountDownLatch conntedSamphore=new CountDownLatch(1); private static ZooKeeper zk=null; private static Stat stat=new Stat(); @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ conntedSamphore.countDown(); }else if(watchedEvent.getType()== Event.EventType.NodeCreated){ System.out.println("node changed:"+watchedEvent.getPath()); } } public static void main(String[] args) throws Exception{ String path="/test-1"; zk =new ZooKeeper("rc-zkp-datn-rse-nmg-ooz-woasis:2181",5000,new GetData_API_Sync_Usage()); conntedSamphore.await(); System.out.println("zk-19 连接成功!"); //zk.create(path+"/lhc", "".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); List<String> children=zk.getChildren(path,new GetData_API_Sync_Usage()); System.out.println("children node:"+children); zk.setData(path+"/lhc","lllhc".getBytes(),-1); zk.getData(path+"/lhc",true,new IDataCallback(),null);//异步获取数据 Thread.sleep(Integer.MAX_VALUE); }}/** * 异步获取node数据回调 * Created by liuhuichao on 2017/7/27. */public class IDataCallback implements AsyncCallback.DataCallback { @Override public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat) { System.out.println("rc="+rc+" ;path="+path+" ;ctx="+ctx+" ;data="+data+" ;stat="+stat); System.out.println("string data="+new String(data)); System.out.println("max version="+stat.getVersion()); }}
更新数据
- 同步设置数据
zk.setData(path+"/lhc","lllhc".getBytes(),-1);//同步设置数据
- 异步设置数据
/** * * 同步/异步获取数据 * Created by liuhuichao on 2017/7/27. */public class GetData_API_Sync_Usage implements Watcher{ private static CountDownLatch conntedSamphore=new CountDownLatch(1); private static ZooKeeper zk=null; private static Stat stat=new Stat(); @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ conntedSamphore.countDown(); }else if(watchedEvent.getType()== Event.EventType.NodeCreated){ System.out.println("node changed:"+watchedEvent.getPath()); } } public static void main(String[] args) throws Exception{ String path="/test-1"; zk =new ZooKeeper("rc-zkp-datn-rse-nmg-ooz-woasis:2181",5000,new GetData_API_Sync_Usage()); conntedSamphore.await(); System.out.println("zk-19 连接成功!"); //zk.create(path+"/lhc", "".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); List<String> children=zk.getChildren(path,new GetData_API_Sync_Usage()); System.out.println("children node:"+children); //zk.setData(path+"/lhc","lllhc".getBytes(),-1);//同步设置数据 zk.setData(path+"/lhc","lhc".getBytes(),-1,new IStatCallback(),null); zk.getData(path+"/lhc",true,new IDataCallback(),null);//异步获取数据 Thread.sleep(Integer.MAX_VALUE); }}/** * 异步设置数据回调接口 * Created by liuhuichao on 2017/7/27. */public class IStatCallback implements AsyncCallback.StatCallback{ @Override public void processResult(int rc, String path, Object ctx, Stat stat) { System.out.println("rc="+rc+" ;path="+path+" ;ctx="+ctx+" ;stat="+stat); if(rc==0){ System.out.println("数据设置成功!"); } }}
检测节点是否存在
/** * 检测zk node * Created by liuhuichao on 2017/7/27. */public class Exist_API_Sync_Usage implements Watcher{ private static CountDownLatch connetedSamphore=new CountDownLatch(1); private static ZooKeeper zk=null; @Override public void process(WatchedEvent watchedEvent) { if(Event.KeeperState.SyncConnected==watchedEvent.getState()){ connetedSamphore.countDown(); }else if(Event.EventType.NodeCreated==watchedEvent.getType()){ System.out.println("node created=="+watchedEvent.getPath()); }else if(Event.EventType.NodeDataChanged==watchedEvent.getType()){ System.out.println("node changed=="+watchedEvent.getPath()); }else if(Event.EventType.NodeDeleted==watchedEvent.getType()){ System.out.println("node deleted=="+watchedEvent.getPath()); } } public static void main(String[] args)throws Exception { String path="/test-1"; zk =new ZooKeeper("rc-zkp-datn-rse-nmg-ooz-woasis:2181",5000,new Exist_API_Sync_Usage()); connetedSamphore.await(); System.out.println("zk-19 连接成功!"); Stat stat=zk.exists(path,new Exist_API_Sync_Usage()); System.out.println("stat="+stat==null?"为空":"不为空"); zk.setData(path,"".getBytes(),-1); Thread.sleep(Integer.MAX_VALUE); }}
阅读全文
0 0
- Java API操作ZK node
- ZK Java API
- Java API访问ZK的权限控制
- node-zk-browser安装
- node-zk-browser 安装
- node-zk-browser环境搭建
- Zookeeper管理工具node-zk-browser
- node-zk-browser 安装配置
- zk常用操作
- 脚本操作zk
- zk006 zk client api介绍
- zookeeper web ui-->node-zk-browser安装
- ZooKeeper web管理安装node-zk-browser
- zookeeper监控工具node-zk-zookeeper安装
- zookeeper web ui-->node-zk-browser安装
- zookeeper可视化监控node-zk-browser
- ZooKeeper web管理安装node-zk-browser
- java 操作 zookeeper API
- strace -c
- Java多线程【二】
- HDU6035-Colorful Tree 补集思想+树形DP
- 二十一天
- String &&StringBuilder&&StringBuffer
- Java API操作ZK node
- [SAM] hihoCoder1445 后缀自动机二·重复旋律5
- vb.net 教程 12-3 HtmlElement类 2
- 如何使用生成器函数实现可迭代对象
- Servlet中监听器
- C#系类之Lambda表达式
- Struts2(二)-Struts2之参数绑定和拦截器
- 使用FFmpeg的各种重要事项
- STM32F103mini教程学习总结与心得(三)---->中断