apache-zookeeper之ZooKeeper 可以在一次操作中获取 znode 数据和 znode 数据版本 (stat) 吗
cloudgamer
阅读:492
2024-08-26 10:15:59
评论:0
我正在开发一个使用 ZooKeeper 作为数据存储的应用程序。对于应用程序中的其中一种方法,我需要使用乐观并发控制。比如我需要实现一个获取znode数据的get方法,我使用znode数据版本进行乐观并发控制检查。据我了解,无法在一次操作中获得 znode 数据和 znode 数据版本。如果znode数据的更新竞争比较激烈,get方法将不起作用,因为在获取到znode数据后,znode数据可能会发生变化。所以我在问 - 有没有一种方法可以在一次操作中获得 znode 数据和 znode 数据版本(或 znode 统计信息),而无需在两者之间进行任何锁定尝试?
请您参考如下方法:
在 Java 中,您可以轻松实现您想要的:
Stat stat = new Stat();
byte[] data = zk.getData("/path", null, stat));
这在单个操作中读取数据和版本信息(在
stat 对象中)。回写数据时,传递的是读取时得到的版本号:
zk.setData("/path", data, stat.getVersion());
如果版本不匹配,该方法将抛出
KeeperException.BadVersionException ,这给你一个乐观锁。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



