web-dev-qa-db-ja.com

Paxosと2フェーズコミット

複数のマシン間で合意に達するための手段として、paxosと2フェーズコミットの違いを理解しようとしています。 2フェーズコミットと3フェーズコミットは非常に簡単に理解できます。また、3PCは2PCでブロックされる障害の問題を解決するようです。パクソスが何を解決しているのか、私にはよくわかりません。パクソスが正確にどのような問題を解決するかについて誰かが私に光を当てることができますか?

32
Keeto

トランザクションマネージャーに障害が発生すると、2PCがブロックし、再起動するために人間の介入が必要になります。 3PCアルゴリズム(そのようなアルゴリズムはいくつかあります)は、元のマネージャーが失敗したときに新しいトランザクションマネージャーを選択することにより、2PCを修正しようとします。

Paxosは、大部分のプロセス(マネージャー)が正しい限りブロックしません。 Paxosは実際にはコンセンサスのより一般的な問題を解決するため、トランザクションのコミットを実装するためにも使用できます。 2PCと比較すると、より多くのメッセージが必要ですが、マネージャーの障害に対して回復力があります。ほとんどの3PCアルゴリズムと比較して、Paxosはより単純で効率的なアルゴリズム(最小のメッセージ遅延)をレンダリングし、正しいことが証明されています。

GreyとLamportは2PCとPaxosを優れた paper で「トランザクションコミットに関するコンセンサス」と題して比較しています。

(ピーターの答えでは、彼は2PCと2PL(2相ロック)を混合していると思います。)

32
danyhow

2-PCは、最も伝統的なトランザクションコミットプロトコルであり、トランザクションの原子性のコアを強化します。しかし、それは本質的にブロッキングです。つまり、トランザクションマネージャ/コーディネータがその間に失敗した場合、プロトコルがブロックされ、プロセスはそれを認識しません。コーディネーターを修復するには、手動による介入が必要です。

分散コンセンサスプロトコルであるPaxosには複数のコーディネーターがあり、コーディネーターの過半数がトランザクションの完了に同意すると、アトミックトランザクションが成功します。

https://www.Microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2003-96.pdf を読んで、これら2つのプロトコルの仕組みを理解する必要がありますより細かく区別されます。同じ論文で、レスリーとラムポートもプロトコルを紹介しています。つまり、より速いパフォーマンスのためにPaxosと2-PCの組み合わせです。

0