Zookeeper 數據模型 node
Zookeeper 擁有着相似文件系統的命名空間,惟一的區別是在命名空間下的每個節點都有數據和他關聯 服務器
Znodes session
zookeeper 的節點 znode, znode 維護着一些列狀態信息 包含數據的版本,acl 權限修改信息,時間戳 服務器返回數據和客戶端操做信息都是攜帶版本信息的 若是版本信息不一致的話那個將會失敗(有點像樂觀鎖實現) spa
TIPS 這種處理行爲可用戶覆蓋處理 生命週期
znode 的幾個特徵 事件
watches get
客戶點能夠對znode 添加監聽器, 當觸發的時候 服務器會給客戶端一個通知 it
Data Access io
數據存儲在節點,數據特性是 原子特性的(不可再分割),每個節點都有相應的ACL(Access Control List) 設定。zookeeper 節點存儲的數據主要起協調各節點工做 zookeeper
Time in zookeeper
zookeeper 有多種跟蹤方式
Zxid(ZooKeeper Transaction Id)
每個change 操做都攜帶着一個惟一的ZXID,若是changeA 的 zxid > changeB 的 zxid, 那麼 那麼changeB 將會優先發生(越小優先級越高)
Version Number(版本號)
每次change 都會修改版本號 3 個版本號
Ticks
多服務器時,使用ticks 定義時間事件,載入狀態,會話超時,節點之間connection 超時等
會話超時設定 2 倍的 心跳時間
Real time
zookeeper 時間 須要你本身放進來 不適用本機時間
zookeeper 的狀態信息結構
每一個節點的狀態信息都是由如下數據字段組成的
czxid
建立節點的Zxid
mzxid
最後一次修改節點的Zxid
ctime
節點建立時間(毫秒級別)
mtime
節點最後修改時間(毫秒界別)
version
節點數據版本信息
cversion
子節點版本號信息
aversion
acl 版本號信息
ephemeralOwner
若是該節點是臨時節點 這表示爲會話ID 不然爲 0
dataLength
該節點的數據長度
numChildren
該節點子節點的數量
zookeeper session
session 狀態圖
資料列表