Dubbo-02:使用zookeeper的简单demo

本着够用就行的原则,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;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值