Zookeeper Java 客戶端搭建

tony0087發表於2021-09-09

本教程使用的 IDE 為 IntelliJ IDEA,建立一個 maven 工程,命名為 zookeeper-demo,並且引入如下依賴,可以自行在maven中央倉庫選擇合適的版本,介紹原生 API 和 Curator 兩種方式。

IntelliJ IDEA 相關介紹:


  junit
  junit
  4.11
  test
  org.apache.zookeeper
  zookeeper
  3.4.8
  org.apache.curator
  curator-framework
  4.0.0
  org.apache.curator
  curator-recipes
  4.0.0


maven 工程目錄結構:

圖片描述

一、客戶端的 zookeeper 原生 API

使用 zookeeper 原生 API,連線上一教程搭建的三臺服務組成的叢集,因為連線需要時間,用 countDownLatch 阻塞,等待連線成功,控制檯輸出連線狀態!

例項

...public static void main(String[] args) {    try {        final CountDownLatch countDownLatch=new CountDownLatch(1);        ZooKeeper zooKeeper=            new ZooKeeper("192.168.3.33:2181," +                    "192.168.3.35:2181,192.168.3.37:2181",                    4000, new Watcher() {                @Override                public void process(WatchedEvent event) {                    if(Event.KeeperState.SyncConnected==event.getState()){                        //如果收到了服務端的響應事件,連線成功                        countDownLatch.countDown();                    }                }            });        countDownLatch.await();        //CONNECTED        System.out.println(zooKeeper.getState());        }}...

控制檯輸出 connected 顯示連線成功!

圖片描述

簡單示例新增節點 API:

zooKeeper.create("/runoob","0".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);

提示:更多命令功能使用請參考本教程後面章節。

同時在服務端終端執行命令,顯示設定成功。

圖片描述

二、客戶端的curator連線

Curator 是 Netflix 公司開源的一套 zookeeper 客戶端框架,解決了很多 Zookeeper 客戶端非常底層的細節開發工作,包括連線重連、反覆註冊 Watcher 和 NodeExistsException 異常等。

Curator 包含了幾個包:

  • curator-framework:對 zookeeper 的底層 api 的一些封裝。

  • curator-client:提供一些客戶端的操作,例如重試策略等。

  • curator-recipes:封裝了一些高階特性,如:Cache 事件監聽、選舉、分散式鎖、分散式計數器、分散式 Barrier 等。

簡單使用示例:

例項

上一步設定了 /runoob 節點值,所以控制檯輸出。

圖片描述

curator 相關參考連結: http://curator.apache.org/

作者公眾號:一起寫程式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2797703/,如需轉載,請註明出處,否則將追究法律責任。

相關文章