トランザクションを分散しているものを1詳細分散トランザクション---
3詳細--- Seata分散トランザクションは、トランザクションのフレームワーク分散します
ここでは、分散トランザクションのためのアリSeataオープンソースフレームワークを導入しました。
1 Seata はじめに
Seata
(旧称
Fescar
)アリ
18
オープンソースの分散トランザクションのためのフレームワーク。
Fescar
分散トランザクションのためのオープンソースのフレームワークフィールドに大きな影響。オープンソースの大きなとして、Fescar
アリからGTS(PS:もちろん、コストが許すならば、直接使用することができGTSのうち、電荷量に応じて)、二から一一は、かつての人気注意して開き、いくつかの試練に耐えてきました。Fescarは後でSeataと改名しました
。
Fescarは、
それが分散されているが、トランザクション2相コミットが、それは解決
XAを
の欠点のいくつかを
:
- シングルポイントの問題:
- 同期ブロック: Fescar ローカル・トランザクションがないように、リソースの解放に提出されました、再び2つの段階、第一段階XAは再び2準備するとコミットフェーズリソースがロックされている、とFescar、コミット非同期操作をするだけでなく、性能を向上させる主要なキー。
- データの矛盾:の部分がある場合はコミット失敗し、fescar-サーバは、現状の結果に基づいて、異なる再試行戦略であるモードと枝のトランザクションを返します。そしてfescar 実際には、単にデータベースをコミットする人を見たときに、ローカル・トランザクションは段階で提出されたデータベースが一貫しているとき。
- これは、単一のデータベースのみに使用することができます: Fescarは二つのモード、提供していますAT とMTを。ではATのモード総務リソースはACIDの中でサポートしている任意のデータベースにすることができMT 無制限のリソースとトランザクションモード、キャッシュすることができ、ファイルすることができ、上の別のとそうであってもよいです。
もちろん、この2つのモードが混合することができます。
一方
Fescarは
また、近くに保持さ
0
侵略のビジネスの利点、唯一のシンプルな構成
Fescar
プロキシデータの、コメント、プラスUndologテーブルを処理し、我々が望むものを達成することができます。
2原則
Fescar
一緒に現地情勢の異なるマイクロサービスにおける配信数は次のように構成され、グローバル・トランザクションを形成するので、分散トランザクションブランチとしてローカルトランザクションを:
マネージャートランザクション(TM)
:
コントロールの境界線のグローバル・トランザクションは、グローバルトランザクションを開くための責任があり、そして最終的には世界的なグローバルコミットする解像度やロールバックを起動します。
マネージャリソース(RM)
:
コントロール総務支店は、支店は、登録、ステータスレポートを担当し、コミットやロールバックドライブブランチ(ローカル)トランザクション、命令事務コーディネーターを受けます。
典型的な分散トランザクション処理:
- TM とTC グローバル・トランザクションの開放を要求して、グローバル・トランザクションが正常に作成され、グローバルにユニークな生成されたXIDを。
- XIDのマイクロサービスコールリンクの文脈で普及。
- RM へのTCは、分岐トランザクションがに組み込まれる予定登録XIDのグローバルトランザクションに対応する管轄。
- TM のTCは反対に開始XID コミットやロールバック解像度グローバル。
- TCのスケジュールXID コミットまたはロールバック要求の管轄下にあるすべてのブランチトランザクション完了。
3 Fescar モード
Fescarは、
分散トランザクションの実現提供
3
モード、
AT
モード、
MTの
モードと混在モード:
AT 3.1 モード
ビジネスロジックは自動的に懸念取引メカニズム、支店やインタラクティブなプロセスグローバルトランザクションである必要はありません。
AT
モード
:マルチに焦点
DBの
データアクセスの一貫性、実装するためのシンプル、ビジネスへの侵襲性の低いです。
AT
次のようにコードのモード部分:実行状態を考慮する必要はありません、侵入のコードは、小企業です。同様に以下のコードは、添加のみ@GlobalTransactional必要とする方法である
に注釈を。
AT
:コアビジネスモデルの二相が示した新しい改善、そのデザインのアイデアをコミットされた、非侵襲的です
第一段階:
コアビジネスの嘘
SQL
構文解析され、に変換
undolog
ロールバックジャーナルは、リソースの最初の段階でリリースすることが可能で、二相は、リソースが実際のコミットまたはロールバック操作を継続する必要性の第二段階にロックする傾向がコミットし、ロック、ロック範囲が異常のみundolog見つけるために、ロールバック第二段階を発生しても、効率を向上させる、減少される
対応するデータおよびトランス解決
SQL
ロールバックの目的を達成するために。プロキシサービスを介してSeataデータソース
SQLは
解決さが行わ
undolog
ビジネス上の非侵襲的な効果に、一方のサービス・データ・ストレージを更新します。
第二段階:
解像度はグローバルロールバックの場合は、
RMの
領収書はにより、ロールバック要求のコーディネーターに送ら
XID
と
支店ID
、ロールバックログレコードは、バックリバースロールレコードによって生成された更新SQLを発見され、対応する
分岐バックを完了するために行いますロール。
3.1 MT モード
サービスロジックがに分解する必要があります準備/コミット/ロールバック3 の部分、形成されたMTの追加グローバル・トランザクションのブランチを。
MTの
一方のモード
AT
サプリメントモード。また、より重要な価値があることによって、
MTが
グローバルトランザクションモードで非トランザクションリソース管理の数に組み入れることができます。
3.2混合モード
ので
AT
と
MTは、
行動のパターンからパターンを分岐し、あなたが完全な互換性、である、グローバル・トランザクションは、同時にATができることができますので、基本的に同じである
と
MTの
枝。ですから、ビジネスシナリオの包括的なカバレッジを達成できること:
ATの
モードは、ATモードを使用して、サポートすることができます;
AT
モード一時的にではサポートされないことができ
MTの
代わりにモード。また、自然、
MT
非トランザクションリソース管理モデルは、分散トランザクションを管理に一緒にトランザクショナルおよびリレーショナルデータベースリソースをサポートすることができます。