Zookeeper的增删改查Java代码
发布时间:2020-05-26 02:21:15 所属栏目:Java 来源:互联网
导读:Zookeeper的增删改查Java代码
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 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();
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
