#** **分散トランザクション
##分散トランザクションは何1
分散システムでは、在庫などを低減するために作成するために、ユーザ登録などの異なるサービス・デリバリー・ポイント間の取引を完了するために、リモート・コラボレーションのニーズを必要とするネットワーク上に分散トランザクションと呼ばれます。
道ローカルトランザクションと分散トランザクション処理は現実的ではありません。
## 2、分散トランザクションによって引き起こされる問題は
、それがローカル業務トランザクションに分散されるトランザクションを制御することができません。
## 3、シーン分散トランザクションが発生
異なるデータベースで異なるサービスの下でマイクロサービスを、同じデータベースと異なるマイクロサービスの異なるデータベース(サブライブラリー)と同じサービス。
##第二に、ソリューション分散トランザクション
一般的な解決策は2PC、TCC、メッセージキュー、4つのシナリオを通知するために最大の努力を持っています。
## 1、2相コミット2PC
二つの部分に分割し、準備フェーズがP cは位相2つの手段二相コミット準備フェーズを指し、位相手段をコミット。
業務またはロールバックを担当するトランザクションマネージャの最終提出における取引参加者がトランザクションマネージャおよびトランザクションを分散。
準備フェーズ:トランザクションマネージャのデータベースは、それぞれオープンローカル業務への準備を始めたが、提出してみましょうデータベースレコードのデータを変更前と変更されないように。これは、データがロックされています。
フェーズコミット:信号がトランザクションを完了するための指示を出し、その後コミット準備フェーズ中に受信成功したトランザクションマネージャです。エラーメッセージが表示された場合、命令発行のコールバックを上演できるようになります。この時作者でもない
か、ロールバックリソースが解放されます。
リリース1.1 XAリソース効率のソリューションが比較的低いトランザクションブランチを必要とした後にのみ、すべてのコミットまたはロールバックされています。
1.2 seataプログラムは、登録ユーザへの例として、非侵襲的な配信ポイントのためのフレームワークです
(オープングローバル業務を担当し、最終的には世界的なコミットまたはTCへのロールバック送ら)TMトランザクションマネージャ
背中にコマンドをRMリソースマネージャ(データベースがコミットまたは開始しますロール)
TCトランザクション・コーディネータ(バックグローバル・トランザクションのコミットやロールを開始するための指示を受信するTM、また、コミットまたはロールバックする責任がある)カルバリ分岐取引
手順:
1)ここで、顧客サービスは、グローバル・トランザクションを生成するために、グローバルTM TM TCを開始したXID
2)ユーザーは、新しいユーザーのためのサービスRM TCの事務枝と枝のトランザクションに登録され、TCによるトランザクションを管理します。
3)、ユーザーはデータベースへの分岐トランザクションデータ、トランザクションのコミット、ロックを解除して添加します。書き込みundo_log
4)、あなたは統合サービス統合サービスを実行するためのロジックを追加するときにもトランザクションがポイントを追加するために使用され、トランザクションはTCによって管理され、TCに分岐トランザクションを登録RM。
5)、一体型一体型分岐トランザクションは、トランザクションがロックを解除することを約束されているデータベースにレコードを追加します。書き込みudo_log
。6)、および論理集積命令はTM TCがグローバルコミットまたはロールバックを送信完了し追加するユーザーを追加します。
7)、TCスケジューリングXID管理分岐トランザクションがコミットまたはロールバックされます。あなたは、削除udo_log記録カルバリの枝を提出した場合。元のデータの記録によるとundo_logロールバック・ログが削除に戻った場合undo_logは、
2つのトランザクションの失敗と成功を達成しました。
特定のコードアドレス
https://pan.baidu.com/s/19ID-D6aM859kdlwnEcSH8Q