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,開發或者自己學習時,我們很難弄到多臺設備,這時可以使用一個僞集羣的配置方式來實現,具體操作如下:
- copy三份zookeeper到三個不同目錄,/zookeeper1,/zookeeper2,/zookeeper3
- 創建/data/zookeeper1,/data/zookeeper2,/data/zookeeper3三個目錄
- 修改三個zookeeper下的zoo.cfg,分別將dataDir指向第二步創建好的三個目錄
- 在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
- 分別在/data/zookeeper1,/data/zookeeper2,/data/zookeeper3下創建myid文件,內容分別爲1、2、3;內容與第四步中server.後面跟的數字一致
- 分別啓動三個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.隊列管理