分散トランザクションの基礎取引トランザクションとは操作単位を指します。この操作単位内のすべての操作は、最終的に一貫した動作を維持する必要があります。すべての操作が成功するか、すべての操作がキャンセルされます。簡単に言えば、トランザクションは「何もしないか、すべてを行うか」のメカニズムを提供します。 地方問題ローカル トランザクションは、実際にはデータベースによって提供されるトランザクション メカニズムと考えることができます。データベース トランザクションに関しては、データベース トランザクションの 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 の違い:
|
>>: クラウドコンピューティングの世界におけるデータアーキテクチャの再考
ウェブサイトの直帰率については誰もが知っていますが、ウェブサイトの直帰率はウェブサイトの実際のデータ...
調査によると、2025 年までに企業のコンピューティング能力の 80% がクラウドで生成されるように...
Kubernetes は、最も人気のあるオープンソースのコンテナ オーケストレーション ソリューショ...
クラウドコンピューティングによるデジタル化の波があらゆる業界に広がっています。コンピューティング、ネ...
COVID-19パンデミックは、わずか1年余りで、あらゆる企業のビジネスのやり方に、以前なら何年もか...
国家の新インフラプロジェクト「東データ西コンピューティング」が本格的に始動したことで、わが国のクラウ...
2006年に設立されたGuangfei Cloudは、国内の複数のデータセンターからの直接リソースを...
最近、鉄道省の「新世代乗車券システム」をめぐって多くのニュースやコメントが出ています。実は、私は長い...
多くの人は、大トラフィックの VPS (できればトラフィック無制限の VPS) を必要としています。...
みなさんこんにちは。私はNezhaです。 Kafka は、今日の時代におけるデータ パイプラインのほ...
1. 背景最近ベクトル検索を使用したので、milvus でストレス テストを実行する必要があります。...
10年間運営されている国内格安VPSブランドのHostyunが、興味深い新製品「China Unic...
2017年後半、携帯電話市場では「人工知能」という言葉が強調され始めました。独自のチップ開発能力を持...
Nodeblade のニュージャージー データセンターでは、20G DDoS 保護、2G メモリを備...
Burst の VPS クラウド 60% 割引コードが再び有効になりました。1 月 31 日まで有効...