教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

學(xué)好Zookeeper Java API是大數(shù)據(jù)基礎(chǔ)加強的必修

更新時間:2018年11月16日15時25分 來源:傳智播客 瀏覽次數(shù):

org.apache.zookeeper.Zookeeper
Zookeeper 是在 Java 中客戶端主類,負(fù)責(zé)建立與 zookeeper 集群的會話, 并提供方法進(jìn)行操作。
org.apache.zookeeper.Watcher
Watcher 接口表示一個標(biāo)準(zhǔn)的事件處理器,其定義了事件通知相關(guān)的邏輯, 包含 KeeperState 和 EventType 兩個枚舉類,分別代表了通知狀態(tài)和事件類型, 同時定義了事件的回調(diào)方法:process(WatchedEvent event)。
process 方法是 Watcher 接口中的一個回調(diào)方法,當(dāng) ZooKeeper 向客戶端發(fā)送一個 Watcher 事件通知時,客戶端就會對相應(yīng)的 process 方法進(jìn)行回調(diào),從而實現(xiàn)對事件的處理。
5.1 . 基本使用
建立 java maven 項目,引入 maven pom 坐標(biāo)。
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.9</version>
</dependency>

5.2 . 更多操作示例
public static void main(String[] args) throws Exception {
        // 初始化 ZooKeeper 實例(zk 地址、會話超時時間,與系統(tǒng)默認(rèn)一致、watcher)
        ZooKeeper zk = new ZooKeeper("node-21:2181,node-22:2181", 30000, new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                System.out.println("事件類型為:" + event.getType());
                System.out.println("事件發(fā)生的路徑:" + event.getPath());
                System.out.println("通知狀態(tài)為:" +event.getState());
            }
        });
    // 創(chuàng)建一個目錄節(jié)點
zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE,
   CreateMode.PERSISTENT);  
// 創(chuàng)建一個子目錄節(jié)點
zk.create("/testRootPath/testChildPathOne", "testChildDataOne".getBytes(),
   Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);  
System.out.println(new String(zk.getData("/testRootPath",false,null)));  
// 取出子目錄節(jié)點列表
System.out.println(zk.getChildren("/testRootPath",true));  
// 修改子目錄節(jié)點數(shù)據(jù)
zk.setData("/testRootPath/testChildPathOne","modifyChildDataOne".getBytes(),-1);  
System.out.println("目錄節(jié)點狀態(tài):["+zk.exists("/testRootPath",true)+"]");  
// 創(chuàng)建另外一個子目錄節(jié)點
zk.create("/testRootPath/testChildPathTwo", "testChildDataTwo".getBytes(),  
   Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);  
System.out.println(new String(zk.getData("/testRootPath/testChildPathTwo",true,null)));  
// 刪除子目錄節(jié)點
zk.delete("/testRootPath/testChildPathTwo",-1);  
zk.delete("/testRootPath/testChildPathOne",-1);  
// 刪除父目錄節(jié)點
zk.delete("/testRootPath",-1);
zk.close();
0 分享到:
和我們在線交談!