【zookeeper】原生Java客户端API入门 04《版本号version参数》

更新节点数据的方法:

  • 同步方法:Stat setData(final String path, byte data[], int version)
  • 异步方法:void setData(final String path, byte data[], int version, StatCallback cb, Object ctx)

参数说明:

  • path:指定数据节点路径
  • data[]:一个字节数组,即需要使用该数据来覆盖节点现在的数据内容
  • version:指定节点的数据版本
  • cb:注册一个异步回调函数
  • ctx:用于传递上下文信息的对象

version参数用于指定节点的数据版本,表名本次更新操作是针对指定的数据版本进行的。

指定数据版本更新的意义何在呢?

通俗的讲"CAS":对于值V,每次更新前都会比对其值是否是预期值A,只有符合预期,才会将V原子化的更新到新值B

防止并发,多个线程同时提交,导致结果被覆盖

zookeeper的setData接口中的version参数是CAS衍化来的。

zookeeper每个节点都有数据版本的概念,在调用更新操作的时候,就可以添加version这个参数,该参数可以对应于CAS

参考:
《zookeeper_节点数据版本号问题》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值