zookeeper-api應用
阿新 • • 發佈:2019-02-15
1 基本使用
org.apache.zookeeper.Zookeeper是客戶端入口主類,負責建立與server的會話
它提供了表1所示幾類主要方法:
功能 | 描述 |
create | 在本地目錄樹中建立一個節點 |
delete | 刪除一個節點 |
exists | 測試本地是否存在目標節點 |
get/set data | 從目標節點上讀取 / 寫資料 |
get/set ACL | 獲取 / 設定目標節點訪問控制列表資訊 |
get children | 檢索一個子節點上的列表 |
sync | 等待要被傳送的資料 |
表1:ZooKeeper 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();
}
}