加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读