1. 程式人生 > >zookeeper-api應用

zookeeper-api應用

1 基本使用

 org.apache.zookeeper.Zookeeper是客戶端入口主類,負責建立與server的會話

它提供了表1所示幾類主要方法

功能

描述

create

在本地目錄樹中建立一個節點

delete

刪除一個節點

exists

測試本地是否存在目標節點

get/set data

從目標節點上讀取 / 寫資料

get/set ACL

獲取 / 設定目標節點訪問控制列表資訊

get children

檢索一個子節點上的列表

sync

等待要被傳送的資料


1ZooKeeper API描述

2 demo增刪改查

public class SimpleDemo {
	// 會話超時時間,設定為與系統預設時間一致
	private static final int SESSION_TIMEOUT = 30000;
	// 建立 ZooKeeper 例項
	ZooKeeper zk;
	// 建立 Watcher 例項
	Watcher wh = new Watcher() {
		public void process(org.apache.zookeeper.WatchedEvent event)
		{
			System.out.println(event.toString());
		}
	};
	// 初始化 ZooKeeper 例項
	private void createZKInstance() throws IOException
	{
		zk = new ZooKeeper("weekend01:2181", SimpleDemo.SESSION_TIMEOUT, this.wh);
	}
	private void ZKOperations() throws IOException, InterruptedException, KeeperException
        {
		System.out.println("/n1. 建立 ZooKeeper 節點 (znode : zoo2, 資料: myData2 ,許可權: OPEN_ACL_UNSAFE ,節點型別: Persistent");
		zk.create("/zoo2", "myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
		System.out.println("/n2. 檢視是否建立成功: ");
		System.out.println(new String(zk.getData("/zoo2", false, null)));
		System.out.println("/n3. 修改節點資料 ");
		zk.setData("/zoo2", "shenlan211314".getBytes(), -1);
		System.out.println("/n4. 檢視是否修改成功: ");
		System.out.println(new String(zk.getData("/zoo2", false, null)));
		System.out.println("/n5. 刪除節點 ");
		zk.delete("/zoo2", -1);
		System.out.println("/n6. 檢視節點是否被刪除: ");
		System.out.println(" 節點狀態: [" + zk.exists("/zoo2", false) + "]");
	}
	private void ZKClose() throws InterruptedException
	{
		zk.close();
	}
	public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
		SimpleDemo dm = new SimpleDemo();
		dm.createZKInstance();
		dm.ZKOperations();
		dm.ZKClose();
	}
}

3 Zookeeper的監聽器工作機制