Dubbo-02:使用zookeeper的简单demo

来源:互联网 发布:天正建筑软件最新版 编辑:程序博客网 时间:2024/05/29 01:53

本着够用就行的原则,Zookeeper这里没有细讲,只有增删改查这些功能,其它的以后再学。

import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.ZooDefs;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.Stat;public class ZkDemo {public static void main(String[] args) throws IOException, KeeperException, InterruptedException{ZooKeeper zk = null;zk = new ZooKeeper("localhost:2181",6000, null);String path = "/user01";ZkDemo zkDemo=new ZkDemo();//清空以前的残留数据zkDemo.deleteNode(zk, path);//创建根路径zkDemo.createNode(zk, path, null);//两个子路径zkDemo.createNode(zk, "/user01/s01", "sub01");zkDemo.createNode(zk, "/user01/s02", "sub02");zkDemo.readNode(zk, path);        //修改zkDemo.updateNode(zk, "/user01/s02", "sub02修改");zkDemo.readNode(zk, path);//删除zkDemo.deleteNode(zk, "/user01/s02");zkDemo.readNode(zk, path);}public String createNode(ZooKeeper zk,String path,String data) throws KeeperException, InterruptedException{byte[] bts=null;if(data!=null) bts=data.getBytes();String actualPath=zk.create(path,bts,ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);    return actualPath;}public void updateNode(ZooKeeper zk,String path,String data) throws KeeperException, InterruptedException{byte[] bts=null;if(data!=null) bts=data.getBytes();Stat stat = zk.exists(path, true);if(stat!=null){zk.setData(path, bts, -1);}}public void deleteNode(ZooKeeper zk,String path) throws KeeperException, InterruptedException{Stat stat = zk.exists(path, true);if(stat!=null){List<String> nodeList = zk.getChildren(path, false);        for (String node : nodeList) {        zk.delete(path + "/" + node, -1);        }        zk.delete(path, -1);}}public Map<String,String> readNode(ZooKeeper zk,String path) throws KeeperException, InterruptedException{System.out.println("...读取:");Map<String,String> map=new HashMap<String,String>();List<String> nodeList01 = zk.getChildren(path, false);        for (String node : nodeList01) {        String p=path + "/" + node;            byte[] b = zk.getData(p,false,null);             String d=new String(b);            map.put(p, d);            System.out.println(d);        }        return map;}}


原创粉丝点击