詳解zookeeper的配置檔案
zoo.cfg配置檔案分析
tickTime=2000 zookeeper中最小的時間單位長度 (ms)
initLimit=10 follower節點啟動後與leader節點完成資料同步的時間
syncLimit=5 leader節點和follower節點進行心跳檢測的最大延時時間
dataDir=/tmp/zookeeper 表示zookeeper伺服器儲存快照檔案的目錄
dataLogDir 表示配置 zookeeper事務日誌的儲存路徑,預設指定在dataDir目錄下
clientPort 表示客戶端和服務端建立連線的埠號: 2181
zookeeper中的一些概念
資料模型
zookeeper的資料模型和檔案系統類似,每一個節點稱為:znode. 是
儲存資料和掛載子節點。 從而構成一個層次化的屬性結構
節點特性
持久化節點 : 節點建立後會一直存在zookeeper伺服器上,直到主動刪除
持久化有序節點 :每個節點都會為它的一級子節點維護一個順序
臨時節點 : 臨時節點的生命週期和客戶端的會話保持一致。當客戶端會話失效,該節點自動清理
臨時有序節點 : 在臨時節點上多勒一個順序性特性
zookeeper的命令操作
1. create [-s] [-e] path data acl
-s 表示節點是否有序
-e 表示是否為臨時節點
預設情況下,是持久化節點
2. get path [watch]
獲得指定
包括 該節點的值:123
然後還有一堆stat資訊,
3.set path data [version] :
set /mic 1234 ,就將 /mic 節點的值 從123 修改為了1234
修改節點 path對應的data
Version 有 樂觀鎖的概念
資料庫裡面有一個 version 欄位去控制資料行的版本號
4.delete path [version] 先要刪除子節點,才能刪除上層節點。
刪除節點
stat資訊
cversion = 0 子節點的版本號
aclVersion = 0 表示acl的版本號,修改節點許可權
dataVersion = 1 表示的是當前節點資料的版本號
czxid 節點被建立時的事務ID
mzxid 節點最後一次被更新的事務ID
pzxid 當前節點下的子節點最後一次被修改時的事務ID
ctime = Sat Aug 05 20:48:26 CST 2017
mtime = Sat Aug 05 20:48:50 CST 2017
cZxid = 0x500000015
ctime = Sat Aug 05 20:48:26 CST 2017
mZxid = 0x500000016
mtime = Sat Aug 05 20:48:50 CST 2017
pZxid = 0x500000015
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0 建立臨時節點的時候,會有一個sessionId 。 該值儲存的就是這個sessionid
dataLength = 3 資料值長度
numChildren = 0 子節點數
Watcher
zookeeper提供了分散式資料釋出/訂閱,zookeeper允許客戶端向伺服器註冊一個watcher監聽。當伺服器端的節點觸發指定事件的時候會觸發watcher。服務端會向客戶端傳送一個事件通知。
但是!!watcher的通知是一次性,一旦觸發一次通知後,該watcher就失效
ACL
zookeeper提供控制節點訪問許可權的功能,用於有效的保證zookeeper中資料的安全性。避免誤操作而導致系統出現重大事故。
CREATE /READ/WRITE/DELETE/ADMIN