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

全國(guó)咨詢/投訴熱線:400-618-4000

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

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

org.apache.zookeeper.Zookeeper
Zookeeper 是在 Java 中客戶端主類,負(fù)責(zé)建立與 zookeeper 集群的會(huì)話, 并提供方法進(jìn)行操作。
org.apache.zookeeper.Watcher
Watcher 接口表示一個(gè)標(biāo)準(zhǔn)的事件處理器,其定義了事件通知相關(guān)的邏輯, 包含 KeeperState 和 EventType 兩個(gè)枚舉類,分別代表了通知狀態(tài)和事件類型, 同時(shí)定義了事件的回調(diào)方法:process(WatchedEvent event)。
process 方法是 Watcher 接口中的一個(gè)回調(diào)方法,當(dāng) ZooKeeper 向客戶端發(fā)送一個(gè) Watcher 事件通知時(shí),客戶端就會(huì)對(duì)相應(yīng)的 process 方法進(jìn)行回調(diào),從而實(shí)現(xiàn)對(duì)事件的處理。
5.1 . 基本使用
建立 java maven 項(xiàng)目,引入 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 實(shí)例(zk 地址、會(huì)話超時(shí)時(shí)間,與系統(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)建一個(gè)目錄節(jié)點(diǎn)
zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE,
   CreateMode.PERSISTENT);  
// 創(chuàng)建一個(gè)子目錄節(jié)點(diǎn)
zk.create("/testRootPath/testChildPathOne", "testChildDataOne".getBytes(),
   Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);  
System.out.println(new String(zk.getData("/testRootPath",false,null)));  
// 取出子目錄節(jié)點(diǎn)列表
System.out.println(zk.getChildren("/testRootPath",true));  
// 修改子目錄節(jié)點(diǎn)數(shù)據(jù)
zk.setData("/testRootPath/testChildPathOne","modifyChildDataOne".getBytes(),-1);  
System.out.println("目錄節(jié)點(diǎn)狀態(tài):["+zk.exists("/testRootPath",true)+"]");  
// 創(chuàng)建另外一個(gè)子目錄節(jié)點(diǎn)
zk.create("/testRootPath/testChildPathTwo", "testChildDataTwo".getBytes(),  
   Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);  
System.out.println(new String(zk.getData("/testRootPath/testChildPathTwo",true,null)));  
// 刪除子目錄節(jié)點(diǎn)
zk.delete("/testRootPath/testChildPathTwo",-1);  
zk.delete("/testRootPath/testChildPathOne",-1);  
// 刪除父目錄節(jié)點(diǎn)
zk.delete("/testRootPath",-1);
zk.close();
0 分享到:
和我們?cè)诰€交談!