Time in ZooKeeper ZooKeeper跟蹤時間的多種方式 1)Zxid:每個ZooKeeper狀態變化將會接收到一個zxid(ZooKeeper Transaction Id)的時間戳。ZooKeeper通過該欄位瞭解所有變化的順序。每次變化都會有一個唯一的zxid,如果zxid1小 ...
Time in ZooKeeper
ZooKeeper跟蹤時間的多種方式
1)Zxid:每個ZooKeeper狀態變化將會接收到一個zxid(ZooKeeper Transaction Id)的時間戳。ZooKeeper通過該欄位瞭解所有變化的順序。每次變化都會有一個唯一的zxid,如果zxid1小於zxid2,說明zxid1發生在zxid2之前。
2)Version numbers:每個對節點的變化都會對這個節點的版本號加1.有3個版本號他們分別是version\cversion\aversion
3)Ticks:當在使用多機ZooKeeper服務時,伺服器之間會使用ticks票據來定義事件(比如狀態上傳、會話超時、連接超時等等)的計時。tick時間會通過最小會話超時時間間接顯示;如果客戶端請求會話超時小於最小的會話時間,服務端會告訴客戶端這個會話超時時間實際是最小會話時間;
4)Real time:ZooKeeper沒有使用實時時間或者時鐘時間,除了把時間戳放進正在創建或者修改的znode節點的數據結構中。
在ZooKeeper的每個znode節點的數據結構由以下幾個欄位組成:
1)czxid-znode節點創建時間所對應的zxid
2)mzxid-znode節點修改時間所對應的zxid
3)ctime-znode節點創建時從epoch過來的時間戳
4)mtime-znode節點修改時從epoch過來的時間戳
5)version-znode節點的版本號
6)cversion-znode子節點的版本號
7)aversion-znode節點的許可權(ACL)版本號
8)ephemeralOwner-如果znode節點是臨時節點,表示所屬會話的id,如果不是臨時節點則為0
9)dataLength-znode節點數據欄位的長度
10)numChildren-znode節點的子節點數量