常用的zookeeper 操作api肮砾,持續(xù)更新中...
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;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Id;
import org.apache.zookeeper.data.Stat;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
? * Test Method {create/exists/delete/getChildren/setData/getData/addAuthInfo/setACL/getACL}
? *
? * @author yinkaipeng
? *
? */
public class ZooJavaApi {
? ? private static final int SESSION_TIMEOUT = 1000;
? ? public static final Logger LOGGER = LoggerFactory.getLogger(ZooJavaApi.class);
? ? public static final String HOST = "192.168.3.17:2181,192.168.3.18:2181,192.168.3.9:2181";
? ? private static Watcher watcher = new Watcher() {
? ? ? ? public void process(WatchedEvent we) {
? ? ? ? ? ? LOGGER.info("process:" + we.getType());
? ? ? ? }
? ? };
? ? private static ZooKeeper zookeeper;
? ? private static void connect(){
? ? try {
zookeeper= new ZooKeeper(HOST, SESSION_TIMEOUT, watcher);
System.out.println("I am connected ok");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
? ? }
? ? public static void main(String[] args) throws Exception {
? ? connect();
? ? ZooJavaApi? test =new ZooJavaApi();
? ? //test.testGetChildren("/");
? ? //test.testCreate("/zk2","hello");
? ? //test.testGetAcl("/zk2");
? ? //test.testSetAcl("/zk2", "yinkp:yinkp");
? ? test.testAddAuthInfo("/zk2", "yinkp:yinkp");
? ? ?test.close();
}
? ? public void close() {
? ? ? ? try {
? ? ? ? ? ? zookeeper.close();
? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }finally{
? ? ? ? System.out.println("session is close !");
? ? ? ? }
? ? }
? ? public void testCreate(String znode,String data ) {
? ? ? ? String result = null;
? ? ? ? try {
? ? ? ? ? ? result = zookeeper.create(str, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? System.out.println("create znode " + result);
? ? }
? ? public void testDelete(String znode) {
? ? ? ? try {
? ? ? ? ? ? zookeeper.delete(znode, -1);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? System.out.println("delete ok :" + znode);
? ? }
? ? public void testGetData(String znode) {
? ? ? ? String result = null;
? ? ? ? try {
? ? ? ? ? ? byte[] bytes = zookeeper.getData(znode, null, null);
? ? ? ? ? ? result = new String(bytes);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? System.out.println(znode+"數(shù)據(jù)為:" + result);
? ? }
? ? public void testSetData(String znode,String data) {
? ? ? ? Stat tempStat = null;
? ? ? ? try {
? ? ? ? ? ? tempStat = zookeeper.setData(znode, data.getBytes(), -1);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? System.out.println("設(shè)置數(shù)據(jù)成功" + znode + "版本為:" + tempStat.getVersion());
? ? }
? ? public void testExists(String znode) {
? ? ? ? Stat tempStat = null;
? ? ? ? try {
? ? ? ? ? ? tempStat = zookeeper.exists(znode, false);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? System.out.println(tempStat.getCzxid() == 0 ? "不存在":"存在");
? ? }
? ? public void testGetChildren(String znode) {
? ? ? ? List<String> list = null;
? ? ? ? try {
? ? ? ? ? ? list = zookeeper.getChildren(znode, false);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? if(list.isEmpty()) {
? ? ? ? ? ? System.out.println(path + "沒有子節(jié)點");
? ? ? ? }else {
? ? ? ? ? ? System.out.println(path + "有子節(jié)點");
? ? ? ? ? ? for(String childrenNode : list) {
? ? ? ? ? ? ? ? System.out.println(" " + childrenNode );
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? public void testSetAcl(String znode,String acl) {
? ? ? ? String aclNode = znode;
? ? ? ? String scheme = "digest";
? ? ? ? String authInfo = acl;
? ? ? ? List<ACL> acls = new ArrayList<ACL>();
? ? ? ? try {
? ? ? ? ? ? Id id1 = new Id(scheme,DigestAuthenticationProvider.generateDigest(authInfo));
? ? ? ? ? ? ACL acl1 = new ACL(ZooDefs.Perms.ALL, id1);
? ? ? ? ? ? acls.add(acl1);
? ? ? ? ? ? //Id id2 = new Id(scheme,DigestAuthenticationProvider.generateDigest("guest:guest"));
? ? ? ? ? ? // ACL acl2 = new ACL(ZooDefs.Perms.READ, id2);
? ? ? ? ? ? //acls.add(acl2);
? ? ? ? } catch (NoSuchAlgorithmException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? try {
? ? ? ? ? ? zookeeper.setACL(aclNode, acls, -1);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? System.out.println("znode:" + aclNode + "認(rèn)證方式:" + scheme + "認(rèn)證信息:" + authInfo);
? ? }
? ? public void testGetAcl(String znode) {
? ? ? ? String getAclNode = znode;
? ? ? ? List<ACL> list = null;
? ? ? ? try {
? ? ? ? ? ? list = zookeeper.getACL(getAclNode, new Stat());
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? LOGGER.error(e.getMessage());
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? if(list.isEmpty()) {
? ? ? ? ? ? System.out.println(getAclNode + " 不存在");
? ? ? ? }else {
? ? ? ? ? ? System.out.println(getAclNode + " ACL如下: ");
? ? ? ? ? ? for(ACL acl : list) {
? ? ? ? ? ? ? ? System.out.print("\t" + acl.toString());
? ? ? ? ? ? }
? ? ? ? }
? ? }
public void testAddAuthInfo(String znode,String acl) {
? ? ? ? String addAuthInfoNode = znode;
? ? ? ? String scheme = "digest";
? ? ? ? String authInfo = acl;
? ? ? ? String result = null;
? ? ? ? try {
? ? ? ? ? ? byte[] bytes = zookeeper.getData(addAuthInfoNode, null, null);
? ? ? ? ? ? result = new String(bytes);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? System.out.println("獲取異常" + result + " 報錯:" + e.getMessage());
? ? ? ? }
? ? ? ? zookeeper.addAuthInfo(scheme, authInfo.getBytes());
? ? ? ? try {
? ? ? ? ? ? byte[] bytes = zookeeper.getData(addAuthInfoNode, null, null);
? ? ? ? ? ? result = new String(bytes);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? System.out.println("添加異常" + result + " 報錯:" + e.getMessage());
? ? ? ? }
? ? ? ? System.out.println("添加成功" + result);
? ? }
}