zookeeper常用java api

常用的zookeeper 操作api,持续更新中...

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+"数据为:" + 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("设置数据成功" + 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 + "没有子节点");

        }else {

            System.out.println(path + "有子节点");

            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 + "认证方式:" + scheme + "认证信息:" + 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);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容