分散トランザクション特性、分散トランザクション処理

1:理解するための分散型のもの: 

     分散トランザクションは、トランザクションの参加、トランザクションサーバ、サーバとトランザクションマネージャリソースが異なる分散システムの異なるノードに配置されているを指します。、これらの小さな操作は異なるサービスノード間で異なる小さな操作の組成物による主要な操作配布され、分散トランザクションは、これらの小さな操作はどちらかのすべてが成功するか、すべてが失敗することを確認する必要があり、本質的には、分散トランザクションを確保することです異なるデータベースからのデータの一貫性。

2:エラーの原因を分散:

A)データベースサブライブラリーサブテーブル。

   データベーステーブル単年度のデータが1000W以上のものを生成するとき、我々はサブテーブルサブライブラリーを検討する必要があり、単純に元のデータベースが複数のデータベース、この時、操作もしアクセス01ライブラリの両方、およびアクセス02となっていることを意味ライブラリには、だけでなく、データの一貫性を確保するためには、分散トランザクションを使用する必要があります。

 

B)SOAの適用。

これは、サービスのビジネスです。このようなオリジナルのスタンドアローンとして今注文センターを分離し、サイト全体の解体、カスタマーセンター、在庫センターは、受注センター、注文情報を格納するための専用のデータベースのために、ユーザーセンターは、専用のデータベースストレージを持って、全体の電気の供給業者のサイトをサポートあなたが注文すると、インベントリ操作は、それがデータの一貫性を確保するために、注文データベースとインベントリデータベースに関係しますしたい場合は、ユーザ情報は、在庫センターは、インベントリ情報を格納するための専用のデータベースを持って、あなたは、分散トランザクションを使用する必要があります。

 

両方の場合において異なる外観が、本質的に同じで、データベースを操作するために多くを変え。

3)分散の使用シナリオ:

支払い:和支払い、買い手は、デビットアカウントですが、売り手の口座にお金を追加し、これらの操作は、単一のトランザクションで実行されなければならない、どちらかのすべてが成功するか、すべて失敗し、売り手のアカウントデータベースは、売主に対応し、買い手対応バイヤーデータベースは、異なるデータベース上で動作する分散トランザクションの導入が必要となります。

オンライン注文:電子ビジネスプラットフォームでの注文は、しばしば2つのアクション、1台のバックル在庫を含み、第二の注文状況を更新することで、在庫や注文は、一般的に別のデータベースに属している、あなたは、データの一貫性を確保するために、分散トランザクションを使用する必要があります。

4)一般的な分散トランザクション・ソリューション:

A)二相XAプロトコル提出に基づいて、

    ローカル・トランザクション・マネージャとリソースマネージャ:XAは分散トランザクション契約であり、XAは、大きく二つの部分に分けられます。様々な地域資源を担当するグローバルなスケジュールは、コミットやロールバックなどのローカルリソースマネージャは、多くの場合、データベース、およびトランザクションマネージャによって実装されている場合。

 

   XAプロトコルは比較的簡単で、かつ商用データベースに一度XAプロトコルを達成するために、だけでなく、分散トランザクションを使用してのコストは、XAにも致命的な欠陥、その性能が十分でない、で、多くの場合、高い並列性を持って、XAは、並行性の高いシナリオを満たすことができません。

B)最終メッセージトランザクションの整合性+

トランザクションのいわゆるニュースは、メッセージングミドルウェアの二段階の提出に基づいているメッセージングミドルウェアエッセンスの特別な使用であり、それは、ローカル・トランザクション・メッセージであり、分散トランザクションに配置された、またはローカル操作の成功を確実にするために成功していますおよび送信メッセージは、成功するかまたは両方がこの機能をサポートするために、オープンソースRocketMQに失敗します。

特定の原則:

 

その実行順序:

B.1)調製システムは、メッセージブローカにメッセージを送信します。

メッセージを保存し、成功を返す準備ができB.2)のメッセージング・ミドルウェア。

メッセージを保存し、成功を返す準備ができB.3)のメッセージング・ミドルウェア;

B.4)コミットメッセージを送信するメッセージミドルウェア。

この順序で実行される分析のために:

   ステップ誤差は、トランザクション全体が失敗し、ローカルの操作を実行しません。

   2つのエラーをステップ、トランザクション全体が失敗し、それがローカルの操作を実行しません。

   それは当時失敗した場合に3つのエラー、今回プロビジョニング・メッセージ、rollbackメソッドをロールバックする必要性をステップ,:システムがコールバックインタフェースのメッセージングミドルウェアを実装して、メッセージングミドルウェアは、トランザクションの実行が成功したかどうかを確認し、コールバックインタフェースを実行していきますメッセージをプロビジョニングロール。

 4ミスステップ、今回ローカルトランザクションが成功ローカル操作は、ロールバックを必要としない、ロールバックに成功している。実際には、ミドルウェアメッセージング、コールバックインタフェースを介して首尾よく実行するためにチェックすることができ、この時間は、実際に送信する必要はありません。ミドルウェアは、このように全体のメッセージトランザクションを完了し、自分のメッセージを送信できるメッセージング、ニュースを提出します。

C)分散トランザクションベースのメッセージングミドルウェアは二段並行性の高いシナリオで提出します:

 例えば:分散トランザクションは、トランザクションメッセージ(メッセージング・システムのローカル・オペレーティング・+)+ Bローカル・オペレーティング・システムに分割され

 

   Bは、その後、正常に動作しなければならない、などの長いメッセージトランザクションが成功したとして、オペレーティングシステムのメッセージによって駆動され、メッセージが送信されなければならず、この時間Bは、ローカル操作にメッセージが表示されます。地元のBに障害が発生した場合はB操作が成功するまで、メッセージは再入力します。これはそれぞれ、分散トランザクションAとBを隠します。

上記のスキームは、動作AとBを完了することができますが、AとBは、厳密に同一ますが、最終的には一貫していない、当然のことながら、この遊びは危険である一方でBが失敗し、実装されている場合は、一貫性があることになります破壊は、特にプレイするかどうか、まだ企業は余裕がどのくらいのリスクを参照する必要があります。

D)TCCのプログラミングモード、

TCCのプログラミングモードでは、二相コミットの変形です。

TCCは、全体のビジネスロジックを3分割し、プログラミングフレームワークを提供します。キャンセルと3つの操作を確認し、試してみてください。

  オンライン注文は、例えば:段階を確認し、在庫のステージをバックルに行くみアップデートが失敗した場合、その後、相をキャンセル入力して、在庫を復元するために行くだろう、TCCは異なる、二相は、コードを通じて人をコミット達成することであるため、注文のステータスを更新することですコードを書かれたビジネスシナリオは、複雑さの同じではなく、同程度ではない、したがって、このモデルは非常によく再利用することはできません。

4)概要:

無制御、部分制御とトータルコントロール:トランザクションを分散、トランザクションを分けることができ、制御の努力に応じて、本質的に、より統一された制御のデータベースです。これは、分散トランザクション制御を導入することなくはない、制御部は、上記メッセージトランザクション+最終的な整合性、TCCモードを含む、二相の変異体の様々なコミットされ、2フェーズ・コミットの完全な制御を完全に実現されます。

部分制御の利点は、同時実行性とパフォーマンスの良い量で、データの一貫性の欠点が弱くなり、完全な制御は、最終的に、一貫性を保証する、パフォーマンスを犠牲にして何とか固有のビジネスシーンに依存します
----- -----------
免責事項:この記事は元の記事CSDNブロガー「wanghang88」であり、BY-SAの著作権契約CC 4.0に従って、再現し、元のソースのリンクと、この文を添付してください。
オリジナルリンクします。https://blog.csdn.net/wanghang88/article/details/79762761

おすすめ

転載: www.cnblogs.com/spark9988/p/11516800.html