5

ZooKeeperで単純なcreate()メソッド呼び出しを行うと、通常の1つではなく2つ増加しているようです。これは実際には、増分量を参照せずにシーケンスが「単調に増加する」ことを指定するだけのJavaDocと一致していますが、なぜこれが発生し始めたのかわかりません。

zk.create(path, value, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);

「key-v-0000000056」、「key-v-0000000058」の順になってしまいます... 57はどこに行きましたか?

4

3 に答える 3

7

子znodeを作成または削除すると、親znodeのcversionが増加します。使用しているように見えるZooKeeper3.3.3では、順次znode作成に使用されるカウンターはcversion自体であるため、2つの順次作成の間の「偽の」作成/削除が、発生している動作の最も可能性の高い理由です。

ZooKeeper 3.4.xでは、削除は親シーケンスカウンターに影響を与えないことに注意してください。DataNode内部的PersistedStatには、cversionが作成数を正確に表すaを保持します。それどころか、Statノードにクエリを実行して取得したのcversionは、子の変更の数を表しますStat.cversion = 2*PersistedStat.cversion - Stat.numChildren

于 2012-04-27T09:10:29.047 に答える
3

次のキーを作成する前に、key-v-0000000056を削除していますか?シーケンシャルIDは親ノードのcversionにすぎず、親で子を削除/作成すると、cversionがインクリメントされます。

于 2012-04-27T04:55:56.730 に答える
0

公式文書では、次のように述べています。

ZOO_SEQUENCEフラグが設定されている場合、一意の単調に増加するシーケンス番号がパス名に追加されます。」

これは、番号が昇順であることを保証しましたが、確実に連続しているわけではありません。

于 2012-05-17T02:21:36.497 に答える