在ZooKeeper中执行一个简单的create()方法调用似乎是递增2,而不是普通的递增。虽然这实际上与JavaDoc是一致的,它只指定序列是“单调递增”,而没有引用增量,但我不确定为什么会发生这种情况。
zk.create(path, value, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);我以"key-v-0000000056“结束,然后"key-v-0000000058"...where 57开始了吗?
发布于 2012-04-27 12:55:57
是否在创建下一个密钥之前删除key-v-0000000056?顺序id只是父节点的cversion,在父节点上删除/创建子节点将增加cversion。
发布于 2012-04-27 17:10:29
创建或删除任何子znode都会递增父znode的cversion。因为在你正在使用的ZooKeeper 3.3.3中,用于连续创建Z节点的计数器是cversion本身,所以在两个连续创建之间的任何“虚假”创建/删除都是你所经历的行为的最有可能的原因。
请记住,在ZooKeeper 3.4.x中,删除操作不再影响父序列计数器:DataNode在内部保存一个PersistedStat,其中的cversion精确表示创建的数量;相反,通过查询节点获得的Stat的cversion仍然表示子更改的数量:Stat.cversion = 2*PersistedStat.cversion - Stat.numChildren。
发布于 2012-05-17 10:21:36
在官方文件中,它说:
如果设置了ZOO_SEQUENCE标志,则会将唯一的单调递增序列号附加到路径名中。“
这保证了数字是递增的,但不一定是连续的。
https://stackoverflow.com/questions/10338076
复制相似问题