zookeeper常用java api

常用的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é)點(diǎn)");

? ? ? ? }else {

? ? ? ? ? ? System.out.println(path + "有子節(jié)點(diǎn)");

? ? ? ? ? ? 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 + " 報(bào)錯(cuò):" + 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 + " 報(bào)錯(cuò):" + e.getMessage());

? ? ? ? }

? ? ? ? System.out.println("添加成功" + result);

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容