2012-05-08 22 views
9

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

単純な例は、アカウントが複数のセッション(つまり、出納係のデポジット、デビット操作など)によって変更されている銀行業務アプリケーションです。パクソスはどの操作が最初に起こるかを決めるのに使われますか?また、Paxosプロトコルの複数のインスタンスが意味するものは何ですか?これはいつどのように使用されますか?基本的には、私は抽象的な用語ではなく具体的​​な例を通してこれをすべて理解しようとしています。

答えて

5

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

またGoogleのビッグ表のぽっちゃりはパクシを使用しています:The Chubby Lock Service for Loosely-Coupled Distributed SystemsBigtable: A Distributed Storage System for Structured Data

+0

例で重要なポイントは、Paxosを使用してマスタを選択し、トランザクションがマスタによって仲介されることです。これは、GoogleがChubbyを使ってマスターを選択し、潜在的なすべてのマスターが知っておく必要のある情報を記録する方法でもありますが、大量データトランザクションはPaxosを回避します。 – btilly

0

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

  • コーディネータトランザクションが
  • 参加者に発信するノードである
  • トランザクションリーダーに代わってデータベースを変更したノードは トランザクションのためにコードを実行するノードがされているが、変更しませんでした任意の状態
  • アクセプタは、トランザクションの状態を記録するノードです。トランザクションを実行するときは、次の手順がとられる

コミット:

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

これはすべてアプリケーションに対して透過的であり、データベース内部で実装されます。したがって、銀行業務アプリケーションでは、デッドロックの競合に対する例外処理を実行するだけで、アプリケーションレベルで実行する必要があります。大規模なデータベースを実装するもう一つの鍵は、MVCC(Multi-Version concurrency control)を介して一般的に助けられる並行性です。

関連する問題