Zookeeper的增删改查Java代码
发布时间:2020-12-14 23:29:16 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 package zookeeper; import java.io.IOException;import java.security.NoSuchAlgorithmException;import java.util.ArrayList;import java.util.List
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 package zookeeper; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooDefs.Perms; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.ACL; import org.apache.zookeeper.data.Id; import org.apache.zookeeper.server.auth.DigestAuthenticationProvider; public class ZookeeperClient implements Watcher { private static class PropertiesDynLoading { public static final String connectString = "192.168.57.128:9181"; public static final int sessionTimeout = 3000; public static final String authScheme = "digest"; public static final String accessKey = "cache:svcctlg"; public static final boolean authentication = false; } private ZooKeeper zk; /** * 创建zookeeper客户端 * * @return */ private boolean createZkClient() { try { zk = new ZooKeeper(PropertiesDynLoading.connectString,PropertiesDynLoading.sessionTimeout,this); } catch (IOException e) { this.log("{}",e); e.printStackTrace(); return false; } if (PropertiesDynLoading.authentication) { zk.addAuthInfo(PropertiesDynLoading.authScheme,PropertiesDynLoading.accessKey.getBytes()); } if (!isConnected()) { log(" ZooKeeper client state [{}]",zk.getState().toString()); } try { if (zk.exists("/zookeeper",false) != null) { log("create ZooKeeper Client Success! connectString",PropertiesDynLoading.connectString); log(" ZooKeeper client state [{}]",zk.getState()); return true; } } catch (Exception e) { this.log("create ZooKeeper Client Fail! connectString",PropertiesDynLoading.connectString); e.printStackTrace(); } return false; } /** * 新增持久化节点 * * @param path * 节点路径 * @param data * 节点数据 * @return */ private boolean createPersistentNode(String path,String data) { if (isConnected()) { try { if (PropertiesDynLoading.authentication) { zk.create(path,data.getBytes(),getAdminAcls(),CreateMode.PERSISTENT); } else { zk.create(path,Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); } return true; } catch (Exception e) { e.printStackTrace(); log("{}",e); return false; } } this.log("zookeeper state",zk.getState()); return false; } /** * 创建瞬时节点 * * @param path * @param data * @return */ private boolean creatEphemeralNode(String path,CreateMode.EPHEMERAL); } return true; } catch (Exception e) { e.printStackTrace(); log("{}",zk.getState()); return false; } /** * 修改数据 * * @param path * @param data * @return */ private boolean setNodeData(String path,String data) { if (isConnected()) { try { zk.setData(path,-1); return true; } catch (Exception e) { e.printStackTrace(); this.log("{}",e); return false; } } this.log("zookeeper state = [{}]",zk.getState()); return false; } /** * 删除节点 * * @param path * @return */ private boolean deleteNode(String path) { if (isConnected()) { try { zk.delete(path,zk.getState()); return false; } /** * 获取节点值 * * @param path * @return */ public String getNodeData(String path) { if (isConnected()) { String data = null; try { byte[] byteData = zk.getData(path,true,null); data = new String(byteData,"utf-8"); return data; } catch (Exception e) { e.printStackTrace(); this.log("{}",e); return null; } } this.log("zookeeper state = [{}]",zk.getState()); return null; } /** * 获取path子节点名列表 * * @param path * @return */ public List<String> getChildren(String path) { if (isConnected()) { String data = null; try { return zk.getChildren(path,false); } catch (Exception e) { e.printStackTrace(); this.log("{}",zk.getState()); return null; } public boolean startZkClient() { return createZkClient(); } /** * zookeeper是否连接服务器 * * @return */ public boolean isConnected() { return zk.getState().isConnected(); } /** * 是否存在path路径节点 * * @param path * @return */ public boolean exists(String path) { try { return zk.exists(path,false) != null; } catch (Exception e) { this.log("{}",e); } return false; } /** * 关闭zookeeper */ public void closeZk() { if (isConnected()) { try { zk.close(); this.log("close zookeeper [{}]","success"); } catch (InterruptedException e) { this.log("zookeeper state = [{}]",e); e.printStackTrace(); } } else { this.log("zookeeper state = [{}]",zk.getState()); } } /** * * @return */ public List<ACL> getCreateNodeAcls() { List<ACL> listAcls = new ArrayList<ACL>(3); try { Id id = new Id(PropertiesDynLoading.authScheme,DigestAuthenticationProvider.generateDigest(PropertiesDynLoading.accessKey)); ACL acl = new ACL(Perms.CREATE,id); listAcls.add(acl); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return Ids.OPEN_ACL_UNSAFE; } return listAcls; } public List<ACL> getAdminAcls() { List<ACL> listAcls = new ArrayList<ACL>(3); try { Id id = new Id(PropertiesDynLoading.authScheme,DigestAuthenticationProvider.generateDigest(PropertiesDynLoading.accessKey)); ACL acl = new ACL(Perms.ALL,id); listAcls.add(acl); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return Ids.OPEN_ACL_UNSAFE; } return listAcls; } public void log(String format,Object args) { int index = format.indexOf("{"); StringBuilder sb = new StringBuilder(format); sb.insert(index + 1,"%s"); System.out.println(String.format(sb.toString(),args)); } @Override public void process(WatchedEvent event) { } public static void main(String[] args) { ZookeeperClient zkc = new ZookeeperClient(); zkc.createZkClient(); if (!zkc.exists("/windowcreate")) { zkc.createPersistentNode("/windowcreate","windowcreate"); } if (!zkc.exists("/windowcreate/value")) { System.out.println("not exists /windowcreate/value"); zkc.createPersistentNode("/windowcreate/value","A0431P001"); } if (!zkc.exists("/windowcreate/valuetmp")) { System.out.println("not exists /windowcreate/valuetmp"); zkc.creatEphemeralNode("/windowcreate/valuetmp","A0431P002"); } System.out.println(zkc.getNodeData("/zookeeper")); System.out.println(zkc.getChildren("/windowcreate")); System.out.println(zkc.getNodeData("/windowcreate/value")); System.out.println(zkc.getNodeData("/windowcreate/valuetmp")); zkc.setNodeData("/windowcreate/value","A0431P003"); System.out.println(zkc.getNodeData("/windowcreate/value")); zkc.deleteNode("/windowcreate/value"); System.out.println(zkc.exists("/windowcreate/value")); zkc.closeZk(); } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |