14

誰かが私にPaxosアルゴリズムが分散データベースでどのように使用されているかの実際の例を教えてもらえますか?アルゴリズムを説明するPaxosに関する多くの論文を読みましたが、実際の例で実際に説明しているものはありません。

簡単な例として、口座が複数のセッション(つまり、出納係での預金、借方操作など)によって変更されている銀行アプリケーションがあります。Paxosは、どの操作が最初に行われるかを決定するために使用されますか?また、Paxosプロトコルの複数のインスタンスとはどういう意味ですか?これはいつどのように使用されますか?基本的に、私は抽象的な用語ではなく具体的​​な例を通してこれらすべてを理解しようとしています。

4

4 に答える 4

7

たとえば、マスターが 3 つのホストで構成される MapReduce システムがあります。1 つはマスターで、他はスレーブです。マスターを選択する手順は、Paxos アルゴリズムを使用します。

また、Google Big Table の Chubby は Paxos を使用しています: The Chubby Lock Service for Loosely-Coupled Distributed SystemsBigtable: A Distributed Storage System for Structured Data

于 2012-05-08T19:14:55.407 に答える
3

Clustrixデータベースは、トランザクション マネージャーで Paxos を使用する分散データベースですPaxos はデータベース内部で使用され、メッセージを調整し、分散システムでトランザクションの原子性を維持します。

  • コーディネーターは、トランザクションが発生したノードです
  • 参加者は、代わりにデータベースを変更したノードです。
  • トランザクションリーダーは、トランザクションに代わってコードを実行したが、状態を変更しなかったノードです
  • アクセプターは、トランザクションの状態を記録するノードです。

トランザクションのコミットを実行するときは、次の手順が実行されます。

  1. コーディネーターは各参加者に PREPARE メッセージを送信します。
  2. 参加者はトランザクション状態をロックします。PREPARED メッセージをコーディネーターに送り返します。
  3. コーディネーターは ACCEPT メッセージをアクセプターに送信します。
  4. アクセプターは、メンバーシップ ID、トランザクション、コミット ID、および参加者を記録します。ACCEPTED メッセージをコーディネーターに送り返します。
  5. コーディネーターは、コミットが成功したことをユーザーに通知します。
  6. Coordinator は、各 Participant と Reader に COMMIT メッセージを送信します。
  7. 参加者とリーダーはトランザクションをコミットし、それに応じてトランザクションの状態を更新します。COMMITTED メッセージをコーディネーターに送り返します。
  8. コーディネーターは内部状態を削除し、これで完了です。

これはすべてアプリケーションに対して透過的であり、データベース内部に実装されています。したがって、バンキング アプリケーションの場合、アプリケーション レベルで行う必要があるのは、デッドロック競合の例外処理を実行することだけです。大規模なデータベースを実装するためのもう 1 つの鍵は同時実行性です。これは通常、MVCC (Multi-Version Concurrency Control) によって支援されます。

于 2013-03-25T16:53:16.970 に答える