2フェーズコミットは、Naive Master-Slaveレプリケーションよりも優れていますか?

cs.stackexchange https://cs.stackexchange.com/questions/123681

  •  29-09-2020
  •  | 
  •  

質問

分散データベースのコンテキストでは、(例えば、 https://www.cs.princeton.edu/courses/archive/fall16/cos418/docs/l6-2pc.pdf )クライアント、マスター、スレーブの間の仮説プロトコルの後:

  • クライアントはマスターにコミット
  • を指示します
  • マスターは
  • をコミットします
  • マスターはクライアントにCOMMITに成功した
  • マスターは、コミットを複製するようにスレーブに指示します。スレーブに障害が発生した場合、マスターは成功するまで試行し、スレーブがすべての編集に巻き込まれます。

これは私に2pcと同じ特性を満たすようです:

  • 安全:マスターがコミットすると、スレーブも最終的にコミットします。スレーブがコミットされている場合、マスターは最初にコミットしていなければなりません。 2PCの利点は、コミットを開始する前に参加者が失敗した場合、TCをコミットするのではなくトランザクションは失敗します。ただし、提案されたプロトコルでは、マスターのコミットはまだ最終的にスレーブに着きます。
  • 活性:このプロトコルはハングしません。
  • はどちらもマスター/ TCに頼りに依存しています。失敗した奴隷/参加者が最終的に目を覚まし、マスター/ TCに追いつくとします。
  • master / tcが停止した場合、
  • どちらも失敗します。
  • 両方のプロトコルでは、マスター/ TCが決定を確定したが、スレーブ/参加者はまだコミットされていないところで一時的な不整合を持つことが可能です。

2pcの主な理論的な違いは、単に一時的に失敗したとは対照的に、参加者(スレーブ)がコミットに「いいえ」と投票できるということです。それは、奴隷が最終的に追いつく上の結論を破るでしょう。しかし、そもそもスレーブが「いいえ」に投票する必要がある理由はわかりません。スレーブ/参加者が恒久的に失敗しないという仮定を考えると、それは「はい」と投票するか、または応答に失敗するべきであるようです。 (銀行口座の例とは異なり、スレーブが盲目的にマスターを複製することを期待しています。)

これをすべて蒸留すると、参加者が永久に失敗しないという2つの想定は、参加者に「準備」フェーズの「いいえ」に投票する機会を与える必要がなくなります。 < / P>

ここに何がありませんか? 2pcが実際には分散データベースを構築するために使用されているので、上記では2ピースに2ポイン以上の利点があります。

  • 私は、一時的に失敗しているのとは対照的に、奴隷が「いいえ」に「いいえ」を投票する必要がないと締めくくっていますか? (私は、銀行口座の例ではなく、データ複製ユースケースについてのみ話します。)
  • 2pcと同じ仮定を与えられ、スレーブが「成功」または「もう一度試す」と仮定していると仮定すると、上記のナイーブレプリケーションがないという保証2PCは何人かの保証がありますか?

質問の目的のために、彼らが答えに不明瞭にされていない限り、実用性を無視したいのです。特に、ディスクフル、スレーブの誤った設定、スレーブ腐敗、オペレータエラー、バギーソフトウェアなど、無停止障害のない仮定が許可されていると解釈できるものを無視したいと思います。

役に立ちましたか?

解決

アルゴリズムの目的を混乱させています。2PCは、両側が異なるデータと投票を選択するための異なる基準を持つ投票アルゴリズムです。マスタースレーブは、2つの場所で同一のコピーを持つことを目的とした冗長アルゴリズムです。

その上、マスタースレーブは、レプリケーションの前にクライアントに戻ると非同期です。クライアントは完了を見ていますが、マスターは複製の前に回復不能になる可能性があります。その時点ではデータが損失します。2pcはこれに対応していません。

述べたように、「スレーブ」を常にYESに投票させることで、組織はマスタースレーブを実装するために2ピースを使用することができます。これは、不要なメッセージオーバーヘッドを備えた同期モードでは、本質的にマスタースレーブです。

議論したいのは、おそらく同期マスタースレーブです。ここでは、スレーブが確認された後にクライアントに戻ります。2PCよりも高速です.2PCに必要な2つの交換の代わりに、各スレーブに1つのメッセージ交換が必要なためです。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top