天天看點

java初學 zookeeper-節點Demo

1.啟動zookeeper叢集

java初學 zookeeper-節點Demo

2.建立maven項目 pom.xml導入依賴

<!--    zookeeper依賴-->
    <dependencies>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
    </dependencies>
           

3.ZkTest

一:zookeeper節點添加、删除練習:

public class ZkTest {
        public static void main(String[] args) {
//        參數:(IP位址 任意IP,端口号預設2181)
            ZkClient zkClient=new ZkClient("192.168.43.112");
//            持久化節點隻能建立一次  path不能重複,可以使用其他節點
            zkClient.create("/test","hello,zookeeper",CreateMode.PERSISTENT );
// 添加節點           zkClient.delete("/test");
            System.out.println("建立:"+zkClient.readData("/test"));
//删除節點
//            System.out.println("輸出:"+zkClient.getCreationTime("/test"));
        }
}
           

添加節點和删除節點的運作結果如下:

java初學 zookeeper-節點Demo
java初學 zookeeper-節點Demo

注意!端口号預設存在,可以寫,可以不寫,但是添加端口号容易出現一下錯誤

public class ZkTest {
    public static void main(String[] args) {
       ZkClient zkClient=new ZkClient("192.168.43.112",1281);//端口号
       zkClient.create("/test","hello,zookeeper",CreateMode.PERSISTENT );
        System.out.println("建立:"+zkClient.readData("/test"));
    }
}
           
java初學 zookeeper-節點Demo

二:zookeeper監聽機制:

public class ZkTest {
    public static void main(String[] args) throws InterruptedException {
//        參數:(IP位址,端口号預設2181)
       ZkClient zkClient=new ZkClient("192.168.43.111");
      zkClient.create("/test4","hello,zookeeper",CreateMode.PERSISTENT);
        //監聽 (節點,監聽器)
      zkClient.subscribeDataChanges("/test4", new IZkDataListener() {
          //處理資料變化  參數:節點路徑,節點對應的資料
          public void handleDataChange(String s, Object o) throws Exception {
              System.out.println("監聽到"+s+"資料修改,新值是:"+o.toString());
          }
            //處理資料删除
          public void handleDataDeleted(String s) throws Exception {
              System.out.println("監聽到資料被删除,新值是:"+s);
          }
      });
        Thread.sleep(100000000);
    }
}
           
public class ZkTest2 {
    public static void main(String[] args) {
        ZkClient zkClient=new ZkClient("192.168.43.111");
//修改節點資訊
//        zkClient.writeData("/test4","/新值test3");
        zkClient.writeData("/test4","/新值test4");
//删除節點
        zkClient.delete("/test4");
    }
}
           

zookeeper提供了監聽和通知的機制,保證了資料的實時同步

java初學 zookeeper-節點Demo