0

A と B の 2 つのノードしかないとします。

ノード A でこれら 2 つのコマンドを発行すると、

$ curl -X PUT -d one .../v1/kv/key1
$ curl -X PUT -d two .../v1/kv/key2

(つまり PUT one key1 、前発生 PUT two key2)が返された場合GET/v1/kv/key2ノード B で返さtwoれることが保証されGETます/v1/kv/key1one? つまり、Consul KVS は、ノード A 上の 2 つの書き込み間の事前発生関係を尊重しますか?

Consul はコンセンサス プロトコルを使用して一貫性を提供します (CAP で定義)。

ええ、しかし私の理解では、CAP定理は複数のレジスタについて話していません。これら 2 つの書き込みは最終的にノード B に伝播する可能性がありますが、予期しない中間状態が発生しないことが保証されていますか?

4

1 に答える 1

1

Consul は線形化可能性を主張しています。「すべてのサーバーが Raft コンセンサス アルゴリズムに参加して、トランザクションが一貫性のある線形化可能な方法で行われるようにします。」

プットが受信された順序とは別の順序で同期された場合、別のノードから読み取るときに、それらが順不同であることがわかり、線形化可能性の保証に違反する可能性があります。したがって、それらは常に順番に観察する必要があります。

ただし、以前の線形化可能性の違反は、タイムアウト値を減らしてマーケティングに嘘をつくことで「解決」されており、 Jepsenはバグを発見したことがないと主張しているため、少なくとも今後数年間は完全に線形化できるとは考えていません。

于 2016-09-21T07:21:50.743 に答える