分散トランザクションの基礎取引トランザクションとは操作単位を指します。この操作単位内のすべての操作は、最終的に一貫した動作を維持する必要があります。すべての操作が成功するか、すべての操作がキャンセルされます。簡単に言えば、トランザクションは「何もしないか、すべてを行うか」のメカニズムを提供します。 地方問題ローカル トランザクションは、実際にはデータベースによって提供されるトランザクション メカニズムと考えることができます。データベース トランザクションに関しては、データベース トランザクションの 4 つの主要な特性について説明する必要があります。 データベース トランザクションを実装する場合、トランザクションに関係するすべての操作は、分割できない実行単位に含められます。実行ユニット内のすべての操作は成功するか失敗します。いずれかの操作が失敗した場合、トランザクション全体がロールバックされます。 分散トランザクション分散トランザクションとは、トランザクション参加者、トランザクションをサポートするサーバー、リソース サーバー、およびトランザクション マネージャーが、異なる分散システムの異なるノードに配置されていることを意味します。 簡単に言えば、大規模な操作はさまざまな小規模な操作で構成されています。これらの小さな操作は異なるサーバーに分散され、異なるアプリケーションに属します。分散トランザクションでは、これらの小さな操作がすべて成功するか、すべて失敗するかを保証する必要があります。 本質的に、分散トランザクションは、異なるデータベース間でのデータの一貫性を確保するように設計されています。 分散トランザクションのシナリオ
分散トランザクションソリューショングローバル取引グローバル トランザクションは DTP モデルに基づいて実装されます。 DTP は、X/Open 組織によって提案された分散トランザクション モデル (
取引全体は 2 つの段階に分かれています。 フェーズ 1: 投票フェーズでは、すべての参加者がトランザクションを事前送信し、それが成功するかどうかについてのフィードバックをコーディネーターに送信します。 フェーズ 2: 実行フェーズ。コーディネーターはフィードバックに基づいてすべての参加者に通知し、コミットまたはロールバックを同時に実行します。 アドバンテージ:
欠点:
信頼性の高いメッセージングサービス信頼性の高いメッセージ サービスに基づくソリューションは、メッセージ ミドルウェアを通じて上流と下流のアプリケーション データ操作の一貫性を確保することです。 タスク A とタスク B をそれぞれ処理できる 2 つのシステム A と B があるとします。このとき、タスク A とタスク B を同じトランザクションで処理する必要があるビジネス プロセスが存在します。この分散トランザクションを実装するには、メッセージ ミドルウェアを使用できます。 ステップ1: メッセージはシステムAからミドルウェアに配信される
タイムアウト照会メカニズムシステム A では、通常のビジネス プロセスを実装するだけでなく、メッセージ ミドルウェアが呼び出すトランザクション照会インターフェイスも提供する必要があります。メッセージ ミドルウェアはパブリッシュ メッセージを受信すると、タイミングを開始します。制限時間内に確認指示が受信されない場合は、システム A が提供するトランザクション クエリ インターフェイスを積極的に呼び出して、システムの現在の状態を照会します。このインターフェースは 3 つの結果を返し、ミドルウェアは 3 つの結果に基づいて異なる応答を行います。
ステップ2: メッセージはミドルウェアによってシステムBに配信されるメッセージ ミドルウェアはメッセージを下流のシステムに配信した後、ブロックされた待機状態になります。下流システムはタスクを直ちに処理し、タスクが処理された後、メッセージ ミドルウェアに応答を返します。
信頼性の高いメッセージング サービスに基づく分散トランザクションでは、前半はパフォーマンスを重視して非同期処理を使用します。後半は同期処理を中心に開発コストに注力します。 ベストエフォート通知ベスト エフォート通知 (定期的な校正とも呼ばれる) は、2 番目のソリューションをさらに最適化したものです。エラー メッセージを記録するためのローカル メッセージ テーブルを導入し、失敗したメッセージの定期的な校正機能を追加して、メッセージが下流のシステムで確実に使用されるようにします。 ステップ1: メッセージはシステムAからミドルウェアに配信される
ステップ2: メッセージはミドルウェアによってシステムBに配信される
このアプローチの利点と欠点: 利点: 最終的な一貫性を実現する非常に古典的な実装。 デメリット: メッセージ テーブルはビジネス システムに結合されます。カプセル化されたソリューションがない場合、さまざまな雑多な作業が必要になります。 TCC業務TCC は Try Confirm Cancel の略で、補償分散トランザクションです。 TCC は、分散トランザクションを次の 3 つのステップで実装します。
TCC 2 フェーズ コミットと XA 2 フェーズ コミットの違いは次のとおりです。 XA は、強力な一貫性を備えたリソース レベルの分散トランザクションです。 2 フェーズ コミット プロセス全体を通じて、リソース ロックは常に保持されます。 TCC は、最終的な一貫性を備えたビジネス レベルの分散トランザクションであり、常にリソース ロックを保持するわけではありません。 TCC 取引の利点と欠点: アドバンテージ:データベース層の 2 フェーズ コミットは実装のためにアプリケーション層に移動され、データベース層での 2PC パフォーマンスの低下の問題を回避します。 欠点:TCC の Try、Confirm、Cancel 操作機能はビジネス側で提供する必要があり、開発コストが高くなります。 サガSaga は補償プロトコルです。 Saga モードでは、分散トランザクションに複数の参加者が存在します。各参加者はリバース補償サービスであり、ユーザーはビジネスシナリオに基づいてフォワード操作とリバースロールバック操作を実装する必要があります。 補償プロトコル: Saga モードでは、分散トランザクションに複数の参加者が存在し、各参加者は正の補償サービスです。上図において、 呼び出されるサービスが n 個あると仮定します。T1 Saga のポジティブ サービスと補償サービスはどちらもビジネス開発者によって実装される必要があるため、ビジネスに干渉します。 Saga モードの分散トランザクションは通常、イベント駆動型であり、参加者間で非同期的に実行されます。 Saga モードは、長いトランザクション ソリューションです。 Sagaパターンの使用シナリオSaga モードは、トランザクションの最終的な一貫性を保証する必要がある長いビジネス プロセスを持つビジネス システムに適しています。 Saga モードは、最初の段階でローカル トランザクションをコミットし、ロックフリーおよび長いプロセスでのパフォーマンスを保証できます。 トランザクションの参加者は、他社のサービスやレガシー システムである場合があります。これらは変換できず、TCC に必要なインターフェースを提供できません。 Sagaパターンが使用可能です。 サガパターンの長所と短所 利点:ローカル データベース トランザクションの 1 フェーズ コミット、ロックフリー、高パフォーマンス。 参加者はトランザクション駆動型の非同期実行を使用できます。高スループット補償サービスは、フォワード サービスの「逆」であり、理解しやすく実装しやすいサービスです。 欠点:Saga モードでは、ローカル データベース トランザクションが最初のフェーズでコミットされており、「予約」アクションが実行されていないため、分離は保証されません。 シータ2019年1月、アリババのミドルウェアチームは、分散トランザクションの使用をローカルトランザクションと同じくらいシンプルかつ効率的にし、開発者が分散トランザクションで遭遇するすべての問題を徐々に解決するというビジョンを掲げ、オープンソースプロジェクトFescar(Fast & EaSy Commit And Rollback)を立ち上げました。その後、分散トランザクション ソリューションである、シンプルで拡張可能な自律トランザクション アーキテクチャを意味する Seata に名前が変更されました。 Seata の設計目標はビジネスに支障をきたさないことであり、そのため、まずは支障をきたさない 2PC ソリューションから始めて、従来の 2PC をベースに進化していきます。分散トランザクションを、複数のブランチ トランザクションを含むグローバル トランザクションとして認識します。グローバル トランザクションの責任は、管轄下にあるブランチ トランザクションを調整して合意に達し、一緒に正常に送信し、失敗した場合は一緒にロールバックすることです。さらに、ブランチ トランザクション自体は通常、リレーショナル データベースのローカル トランザクションです。 Seata は主に 3 つの重要なコンポーネントで構成されています。 TC: トランザクション コーディネーター。グローバル ブランチ トランザクションのステータスを管理し、グローバル トランザクションのコミットとロールバックに使用されます。 TM: トランザクション マネージャー。グローバル トランザクションを開始、コミット、またはロールバックするために使用されます。 RM: リソース マネージャー。ブランチ トランザクションのリソース管理、TC へのブランチ トランザクションの登録、ブランチ トランザクションのステータスの報告、および TC からのブランチ トランザクションのコミットまたはロールバック コマンドの受け入れに使用されます。 Seata の実行プロセスは次のとおりです。
Seata の 2PC 実装と従来の 2PC の違い:
|
>>: クラウドコンピューティングの世界におけるデータアーキテクチャの再考
データ保護とデータ規制への準拠には、組織内での明確な所有権と責任が必要です。最終的な責任は最高情報責...
月収10万元の起業の夢を実現するミニプログラム起業支援プランA5ベンチャーネットワーク(公開アカウン...
最近、ウェブサイトを構築するのはますます難しくなっています。Baidu のアルゴリズムは数日ごとに更...
SaaS と IaaS は、ソフトウェアがクラウドに存在し、ユーザーがいつでもどこからでもソフトウェ...
IDC Review Network (idcps.com) は 4 月 29 日に次のように報告し...
クラウド サービスの成長に伴い、監視すべき費用はこれまで以上に増えています。なぜお金を使うのですか?...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です昨今、電子製品に対する需要はます...
月収10万元の起業の夢を実現するミニプログラム起業支援プランYizhiSEO のウェブサイト最適化シ...
モバイルインターネットの時代において、オンラインマーケティングは市場発展の必然的な流れとなり、オンラ...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン電子商取引が急成長を遂げる中、店舗は依然...
「今回の投資は途家にとって画期的な出来事ではなく、バケーションレンタル業界全体にとって画期的な出来事...
最近では、個人のウェブマスターがますます増えています。すべての初心者は、ウェブサイト構築の初期段階で...
WeChatマーケティングトレーニングが本格的に始まりました。実務経験がなくても、学生のグループを騙...
ウェブマスターのウェブサイトによく出入りする草の根の人間として、私はウェブマスターの中には外部リンク...
インストールにより DNS がクリアされる可能性があるため、手順に従ってインストールする前に次のコマ...