私は簡単にLWWルールを介してデータを破棄することができるように唯一の最近のデータを追跡しても問題の解決にベクトルクロックの助けを採用したいと思います(最後の書き込みが勝つ) は言う、我々は3つのノードがあります。どのようにして決定する同時ベクトルクロックで最後に書き込み勝つ?
を- Node1
- Node2
- Node3
次に、ベクトルクロックを使用して、各イベント/変更の因果関係と並行性を追跡します。私たちは、たとえば、ノード1は、それは我々がこれは通常、大丈夫、右だろう
{Node1: 5, Node2:0, Node3:0}.
につながるという5ずつそのクロックをインクリメント意味するであろう5つのローカルの変更を取得し
{Node1:0, Node2:0, Node3:0}.
で最初にベクトルクロックを表しますか?同時に、ノード2はまた、そのローカルを更新した場合、ノード1は、ノード3へのイベントの更新を渡し、そのvectorclockを便乗を送信し、いくつかの点で
{Node1:0, Node2:1, Node3:0}.
に結果としてそのクロックをインクリメントするもの次に
。したがって、VCがのノード3は、まだ変更がないので、データとクロックを簡単にマージするだけです。
私が対処する方法について考えている問題は、ノード2が自身のVCとアップデートを渡してノード3にアップデートするイベントを送信するとどうなるかということです。 データとクロックには何が起こりますか? Node1からのNode3に書き込まれた最初の書き込みが、それ自身のクロックでより大きいVC値を持つため、基本的に後で書き込みとして表示されたときに、Last Writeの勝利を適用するにはどうすればよいですか。ノード3が受信した{Node1: 5, Node2: 0 , Node3: 1}
ノード2のmessagevcを:マージする前に ノード3の時計{Node1:0, Node2:1, Node3:0}
はどのようにして、同時のVC上のデータを解決するハンドルのですか?