zookeeper的使用及基本概念

一、zookeeper的安裝

1.下載

下載鏈接:http://zookeeper.apache.org/releases.html
進入後選擇版本下載:
在這裏插入圖片描述
其中alpha與beta均爲測試版本,目前最新的穩定版本爲3.4.13。

2.安裝與配置

tar -zxf zookeeper-3.4.13.tar.gz 安裝目錄

解壓後進入安裝目錄的/zookeeper-3.4.13/conf目錄下,將zoo_template.cfg複製一份重命名爲zoo.cfg

cp zoo_template.cfg zoo.cfg

修改zoo.cfg中dataDir=/data/zookeeper並保存,在本地磁盤新建/data/zookeeper目錄,該目錄爲zookeeper的數據存儲目錄。
這裏默認的是單機模式,zookeeper支持兩種啓動模式:單機、集羣
集羣配置需要在三臺以上設備上同時部署zookeeper,開發或者自己學習時,我們很難弄到多臺設備,這時可以使用一個僞集羣的配置方式來實現,具體操作如下:

  1. copy三份zookeeper到三個不同目錄,/zookeeper1,/zookeeper2,/zookeeper3
  2. 創建/data/zookeeper1,/data/zookeeper2,/data/zookeeper3三個目錄
  3. 修改三個zookeeper下的zoo.cfg,分別將dataDir指向第二步創建好的三個目錄
  4. 在zoo.cfg中加入如下配置,其中ip改爲自己服務器ip即可:
    server.1= 192.168.1.148:2888:3888
    server.2= 192.168.1.148:4888:5888
    server.3= 192.168.1.148:6888:7888
    
  5. 分別在/data/zookeeper1,/data/zookeeper2,/data/zookeeper3下創建myid文件,內容分別爲1、2、3;內容與第四步中server.後面跟的數字一致
  6. 分別啓動三個zookeeper

3.啓動

進入目錄/zookeeper-3.4.13/bin下執行腳本zkServer.sh

sh zkServer.sh start

出現下圖所示即表示啓動成功
在這裏插入圖片描述
也可以通過命令查看日誌:

tail -f zookeeper.out

二、zookeeper的簡單使用

1.連接zookeeper

啓動成功後,通過/zookeeper-3.4.13/bin下zkCli.sh可以直接連接zookeeper

sh zkCli.sh

在這裏插入圖片描述

2.增刪改查

zookeeper的增刪改查命令分別爲:

  • 新增節點:create [-s] [-e] path data acl (其中-s表示有序節點,-e表示臨時節點,acl爲權限類型,這三個參數都是非必要參數,即通過 create path data 就可以新增一個節點)
  • 刪除節點:delete path [version](其中version指改節點的版本信息,不指定時表示不驗證版本信息,直接刪除)
  • 修改節點:set path data [version] (version與delete中含義一樣)
  • 查詢節點信息:get path [watch] (watch指定一個監聽器,當節點變化時會做出通知,非必要參數)
  • 另外 ls /節點 可以列出節點的字節點
    下面以節點test爲例,分別使用增刪改查命令操作該節點:
    在這裏插入圖片描述通過ls命令可以看出根節點下面已經有兩個節點(這個是我使用過dubbo,所有產生了一個dubbo節點,默認只有一個zookeeper)。
    在這裏插入圖片描述新增節點可以通過ls顯示出來,
    在這裏插入圖片描述通過get命令可以查詢到test下對應的值爲create時設置的0(其他內容暫時不解釋)
    在這裏插入圖片描述
    通過set命令將/test節點對應的值修改爲11.
    在這裏插入圖片描述
    delete成功將/test節點刪除。

三、zookeeper的基本概念

1.zookeeper文件系統

通過上面的操作,我們可以發現zookeeper提供了一個文件系統,我們可以隨意添加刪除節點,可以爲節點賦值並可以修改這個值,可以爲節點添加自節點。其目錄結構爲樹形結構,如下:
在這裏插入圖片描述

1.1 節點類型

在上面提到過,新增節點時可以選擇兩個可選參數[-s] [-e],其中-s表示有序節點,-e表示臨時節點(臨時節點的生命週期爲從新建節點到本次客戶端連接斷開)。通過命令組合,我們可以猜得到,zookeeper的節點有四種類型:

  • 持久化節點(PERSISTENT)
  • 持久化有序節點(PERSISTENT_SEQUENTIAL)
  • 臨時節點(EPHEMERAL)
  • 臨時有序節點(EPHEMERAL_SEQUENTIAL)

1.2 有序節點

有序節點創建時,只需加入參數[-s]即可,創建後的節點會自動加一個自增的數字後綴,效果如下:
在這裏插入圖片描述

1.3 臨時節點

臨時節點的創建只需加上[-e]參數即可,臨時節點會在客戶端端開鏈接後刪除,測試效果:

  • 創建臨時節點
    在這裏插入圖片描述
  • 端開客戶端
    在這裏插入圖片描述
  • 重新進入, ls查看
    在這裏插入圖片描述
    可以看到,之前創建的持久化有序節點依然存在,但是剛纔創建的臨時節點已經消失。

2. watcher

zookeeper提供了watcher機制,客戶端對一個節點註冊watcher,當節點發生變化時,zookeeper服務器會通知客戶端相應的變化。

  • watcher註冊時機:在查詢節點時可以爲該節點註冊一個watcher,指令包括ls,get,stat
  • watcher觸發時機:當註冊了watcher的節點發生變化時,即出現set,delete,create時,zookeeper會通知客戶端該變化

3.zookeeper可以做什麼

1.命名服務 2.配置管理 3.集羣管理 4.分佈式鎖 5.隊列管理

手寫代碼模擬zookeeper分佈式鎖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章