2.分散トランザクション
体操を行うための事項を参照してください、異なるノード上で必要ですACIDトランザクションを確実にするプロパティを。同じノード上にない場合、例えば、1つのシーン、在庫及びために、分散トランザクションに関与します。
2PC
2フェーズコミットプロトコルの設計の出発点はしているすべての参加者が、自身の業務の一部を放棄できるように。要件アトミックトランザクションに、トランザクションの一部が放棄された場合、全体の分散トランザクションも放棄しなければなりません。
二相が導入することによって、コミット(2PC)コーディネータを参加者(座標)は、参加者と、実際にトランザクションを実行するかどうかの最終決定の動作を調整します。
1.ファイル名を指定して実行プロセス
1.1準備段階
コーディネーターは、トランザクション内の参加者が正常に実行されたかどうかを尋ね、参加者が取引の実行結果を送り返します。
1.2フェーズコミット
場合は、トランザクションが各参加者に正常に実行され、トランザクションコーディネーターは、参加者がトランザクションをコミットするように通知を送信し、そうでない場合、コーディネータは、参加者ができるように通知を送信し、トランザクションをロールバックします。
、ことに注意してください準備段階では、参加者が取引を行ったが、まだコミットしていません。唯一の提出期間のコーディネーターによって送信される通知を受けた後、唯一のコミットまたはロールバックします。
2.問題
2.1同期ブロッキング
他の参加者の応答を待っている間にすべての取引参加者は、他の操作を実行することはできません同期ブロッキング状態になっています。
2.2シングルポイントの問題
コーディネーターは2PCで非常に大きな役割を果たしている、障害が発生した場合、それは大きな影響が発生します。第二段階では特定の場所では、すべての参加者は、あなたが他の操作を行うことができない、待たなければなりません。
2.3データの不整合
フェーズ2では、部分的にのみメッセージを送信するコーディネータをコミットする場合、ネットワーク例外が発生し、その後にのみ参加者の一部がコミットメッセージ受信し、それは、参加者の一部のみが、データシステムの不整合を行う、トランザクションが提出されます。
2.4はあまりにも保守的です
任意のノード障害には、完全な耐障害性はありません、トランザクション全体が失敗する原因になります。
ローカルニュース一覧
ローカルサービスデータメッセージテーブルと同じデータベース内のテーブル、我々はトランザクション2つのテーブルの動作特性を満足し、かつ最終的一貫ことを確認するために、メッセージキューを使用していることを保証するために、ローカル・トランザクションを使用できるようにします。
ローカルテーブルにメッセージ・サービス・データ・メッセージを送信する書き込み動作の動作一方の完了後、分散トランザクションにおいては、ローカル・トランザクションは、メッセージがローカルメッセージテーブルに書き込まれることを保証します。
メッセージが正常に転送された場合2.メッセージキューへのローカル・メッセージ・テーブル・メッセージの後、メッセージは、ローカルリストから削除、または再び前方に継続されます。
前記メッセージキューからのメッセージの他の分散トランザクションにおける読み出し動作を、操作メッセージを行います。