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权限版本号

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