ZooKeeper:06---基礎語法(版本號:cversion、dataVsersion、aclVersion)

一、版本號

  • 每⼀個znode都有⼀個版本號,它隨着每次數據變化⽽⾃增
  • 兩個API操作可以有條件地執⾏:setData和delete。這兩個調⽤以版本號作爲轉⼊參數,只有當轉⼊參數的版本號與服務器上的版本號⼀致時調⽤纔會成功

應用場景

  • 當多個ZooKeeper客戶端對同⼀個znode進⾏操作時,版本的使⽤就會顯得尤爲重要
  • 如下圖所示:
    • 客戶端c1對znode/config寫⼊了⼀些配置信息
    • 然後另⼀個客戶端c2同時更新了這個znode
    • 之後c1的版本號已經過期,c1調⽤setData⼀定不會成功
  • 使⽤版本機制有效避免了並行操作不一致的情況,如下圖所示

二、相關版本

  • 每個ZNode都維護一個叫作Stat的數據結構,Stat中記錄了這個ZNode的三個數據版本
  • get -s命令、ls -s命令、stat命令都可以來查看到節點的版本信息
  • 如下所示:
    • cversion:當前節點的子節點版本號,初始值爲-1,每對該節點的子節點進行操作,這個cversion都會自動增加
    • dataversion:當前子節點的數據版本號,初識版本爲0,每對該節點的數據進行操作,這個dataVersion都會自動增加
    • aclVersion:當前節點的acl權限版本號

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