1. 分散トランザクションへの序章
柔軟なトランザクションにおけるサービス モード: 1) クエリ可能な操作: サービス操作には、グローバルに一意の識別子と、操作に対して一意に決定された時間があります。 2) べき等操作: 繰り返し呼び出しによって生成されるビジネス結果は、単一の呼び出しによって生成される結果と同じです。 1 つ目は、業務処理を通じてべき等性を実現すること、2 つ目は、システムがすべてのリクエストと処理結果をキャッシュし、最後に、重複したリクエストを検出した後、以前の処理結果を自動的に返すことです。 3)TCC操作:
TCC と 2PC (2 フェーズ コミット) プロトコルの違い: TCC はリソース レイヤーではなくビジネス サービス レイヤーに配置されます。 TCC には個別の準備段階はありません。 Try 操作には、リソース操作と準備機能の両方があります。 TCC の Try 操作では、ビジネス リソースを柔軟に選択し、粒度をロックできます。 TCC の開発コストは 2PC よりも高くなります。実際、TCC も 2 段階操作ですが、TCC は 2PC 操作と同等ではありません。 4) 補償可能な操作: 実行フェーズ: 業務処理が実際に実行され、業務処理の結果が外部から見えるようになります。 補償フェーズ: 正のビジネス操作のビジネス結果を相殺または部分的にキャンセルし、補償操作は冪等性を満たします。 制約: 補償業務はビジネスの観点から実行可能であり、ビジネス実行結果の分離不足や補償の不完全さによって生じるリスクとコストは制御可能です。実際、TCC の確認操作とキャンセル操作は補償操作と見なすことができます。 2. 柔軟なトランザクションソリューションアーキテクチャ 電子商取引分野などのインターネット シナリオでは、従来のトランザクションによってデータベースのパフォーマンスと処理機能にボトルネックが生じています。柔軟なトランザクションには、基本的な可用性と柔軟な状態という 2 つの特性があります。 いわゆる基本的な可用性とは、分散システムに障害が発生した場合に、ある程度の可用性の損失が許容されることを意味します。柔軟な状態とは、データベースの読み取り/書き込み分離のマスター/スレーブ同期遅延など、システム全体の可用性に影響を与えない中間状態をシステムが持つことが許可されていることを意味します。柔軟なトランザクションの一貫性は、最終的な一貫性を指します。 信頼性の高いメッセージに基づく最終的な一貫性ソリューション 1) 実装: ビジネス トランザクションを送信する前に、ビジネス処理サービスはリアルタイム メッセージング サービスにメッセージの送信を要求します。リアルタイム メッセージング サービスはメッセージ データを記録するだけで、実際にメッセージを送信することはありません。ビジネス トランザクションが送信されると、ビジネス処理サービスはリアルタイム メッセージング サービスへの送信を確認します。リアルタイム メッセージング サービスは、送信指示の確認を受け取った後にのみ、実際にメッセージを送信します。 2) メッセージ: ビジネス トランザクションがロールバックされた後、ビジネス処理サービスはリアルタイム メッセージング サービスへのメッセージの送信をキャンセルします。メッセージ送信状態確認システムは、送信またはロールバックが確認できていないメッセージを定期的に検出し、業務処理サービスにメッセージの状態を問い合わせます。ビジネス処理サービスは、メッセージ ID またはメッセージの内容に基づいて、メッセージが有効かどうかを確認します。パッシブ側の処理結果は、アクティブ側の処理結果に影響を与えません。受動側のメッセージ処理操作はべき等操作です。 3) コスト: 信頼性の高いメッセージ システムを構築するためのコスト。メッセージを送信するには 2 つの要求が必要であり、ビジネス処理サービスではメッセージ ステータス クエリ インターフェイスを実装する必要があります。 4) 利点: メッセージ データは独立して保存および拡張されるため、ビジネス システムとメッセージ システム間の結合が減少します。最終的な一貫性の時間に非常に敏感であるため、ビジネスの受動的な側面の実装コストが削減されます。 JMS 標準を実装するすべての MQ ミドルウェアと互換性があり、ビジネス データの信頼性を確保しながらビジネスの究極の一貫性を確保し、理想的には準リアルタイムの一貫性を実現します。 TCC取引補償ソリューション 1) 実装: 完全なビジネス アクティビティは、主要なビジネス サービスといくつかの従属ビジネス サービスで構成されます。メインビジネスサービスは、ビジネスアクティビティ全体の開始と完了を担当します。ビジネスサービスからTCC型のビジネスオペレーションを提供します。ビジネス アクティビティ マネージャーは、ビジネス アクティビティの一貫性を制御します。ビジネスアクティビティの操作を登録し、ビジネスアクティビティが送信されると、すべての TCC タイプの操作の確認操作を確認します。ビジネス アクティビティがキャンセルされると、すべての TCC タイプ操作のキャンセル操作を呼び出します。 2) コスト: TCC 操作の実装には、業務活動の終了時に行う確認操作とキャンセル操作の実行コストなど、コストが高くなります。事業活動のコストを記録します。 3) 使用範囲: 強力な分離性と厳格な一貫性要件を備えたビジネス活動。口座処理や手数料の請求など、実行時間が短い業務に適しています。 4) 特徴:特定のサービスフレームワークと結合されておらず、リソース層ではなくビジネスサービス層に配置されているため、ビジネスリソースのロック粒度を柔軟に選択できます。 TCC では、各サービス リソースはローカル トランザクションで操作されます。データは短時間ロックされ、スケーラビリティに優れています。独立して展開される SOA サービス向けに設計されていると言えます。 ベストエフォート通知 1) 実装: ビジネスアクティビティのアクティブパーティは、処理を完了した後、ビジネスアクティビティのパッシブパーティにメッセージを送信し、メッセージは失われることが許可されます。ビジネス アクティビティの受動的な側は、タイミング戦略に従ってビジネス アクティビティの能動的な側に問い合わせて、失われたビジネス メッセージを回復します。 2) 制約: 受動的なパーティの処理結果は、能動的なパーティの処理結果に影響を与えません。 3) コスト: ビジネスクエリおよび校正システムの構築にかかるコスト。 4) 使用範囲: ビジネスの最終的な一貫性に対する時間的感度が低い。企業間をまたいだビジネス活動。 5) 機能: ビジネス処理が完了すると、ビジネス アクティビティのアクティブ パーティは、ビジネス アクティビティのパッシブ パーティに通知メッセージを送信します。アクティブなパーティは、時間階層化された通知ルールを設定し、通知が失敗した後にルールに従って通知を繰り返すことができます。 N 回の通知の後は、それ以上の通知は行われません。アクティブ側は、オンデマンド校正クエリ用の校正クエリ インターフェイスをパッシブ側に提供し、ユーザーが失われたビジネス メッセージを回復できるようにします。 適用範囲:銀行通知、加盟店通知。 3. 信頼性の高いメッセージに基づく最終的な一貫性ソリューション メッセージ送信の一貫性 分散システムにおけるメッセージ ミドルウェアの中心的な役割は、非同期通信、アプリケーションの分離、および同時バッファリング (トラフィック ピーク シェービングとも呼ばれます) です。分散環境では、ネットワークを介して通信を実行する必要があり、データ転送に不確実性が生じます。これが CAP 理論におけるパーティション フォールト トレランスです。 メッセージ送信の一貫性とは、メッセージを生成するビジネス アクションがメッセージの送信と一貫していることを意味します。つまり、ビジネス操作が成功した場合、このビジネス操作によって生成されたメッセージは送信される必要があり、そうでない場合は失われます。 解決策1:
上記の状況では、業務処理が成功した場合、実行されたメッセージが送信される前にアプリケーションが失敗し、メッセージが送信できず、メッセージが失われ、受注システムと会計システム間でデータの不整合が発生します。メッセージシステムやネットワークに異常がある場合、メッセージを送信できず、データの不整合が発生する可能性があります。 解決策2:
上記の 2 つの操作の順序が逆になると、状況はさらに制御不能になります。メッセージの送信後に業務注文が失敗し、注文システムと業務システム間でデータの不整合が発生する可能性があります。では、JMS 標準の XA プロトコルは送信の一貫性を保証できるのでしょうか? JMS プロトコル標準 API には、XA で始まる多くのインターフェイスがありますが、これらは実際には、前述の XA プロトコル (2 フェーズ コミット プロトコルに基づく) をサポートするグローバル トランザクション インターフェイスです。
JMS の XA シリーズのインターフェースは、分散トランザクションのサポートを提供できます。ただし、XA 分散トランザクションを使用すると、多くの制限が生じます。 ビジネス オペレーションに必要なリソースは XA プロトコルをサポートする必要がありますが、すべてのリソースが XA プロトコルをサポートしているわけではありません。 2 フェーズ コミット プロトコルのコスト。 グローバル ロックなどの永続コスト、高コスト、低パフォーマンスなどの DTP モデルの制限。 XA プロトコルの使用は、柔軟なトランザクションの本来の目的に反します。 メッセージの一貫性を確保するための回避策 1) メッセージを送信: アクティブなパーティがアプリケーションを通じてメッセージをメッセージ ミドルウェアに送信し、メッセージのステータスが「確認待ち」としてマークされます。 2) メッセージミドルウェアはメッセージを受信した後、メッセージをメッセージストレージに保存しますが、受動側のメッセージ配信には影響しません。 3) メッセージ ミドルウェアはメッセージの永続化結果を返し、アクティブ パーティは返された結果に基づいてビジネス操作を実行する方法を決定します。
4) 業務処理が完了すると、業務処理結果がメッセージミドルウェアに返されます。メッセージ ミドルウェアは、ビジネス操作構造を受信すると、ビジネス結果に応じてそれを処理します。
前の肯定的なプロセスが成功すると、メッセージはパッシブ アプリケーションに配信されます。ただし、上記の処理フローでは、どのリンクでも問題が発生する可能性があります。 従来のMQメッセージ処理フローと特徴 従来の MQ キュー処理ではメッセージの一貫性を実現できません。メッセージ配信の本質はメッセージの消費であり、これは洗練することができます。 メッセージ重複問題とビジネスインターフェースの冪等性設計 未確認メッセージは、ルールに従って再配信することによって処理されます。上記のプロセスでは、メッセージを繰り返し送信すると、ビジネス処理インターフェイスが繰り返し呼び出されます。 メッセージ消費プロセス中にメッセージが繰り返し送信される主な理由は、コンシューマーがメッセージを正常に受信して処理した後、メッセージ ミドルウェアが配信ステータスを時間内に更新しないことです。メッセージを繰り返し送信することが許可されている場合、コンシューマーはビジネス インターフェイスのべき等設計を実装する必要があります。 ローカルメッセージングサービスソリューション 1) 実装のアイデア:
2) 利点:
3) デメリット:
独立したメッセージングサービスソリューション 1) 実装のアイデア: 事前送信メッセージ: アクティブ アプリケーション システムはメッセージを事前送信し、そのメッセージはメッセージ サービス サブシステムによって保存されます。ストレージに障害が発生すると、業務を遂行できなくなります。返却保管が成功したら業務操作を実行します。 ビジネス オペレーションの実行: ビジネス オペレーションが正常に実行された場合、ビジネス オペレーションの正常な実行のステータスがメッセージ サービス サブシステムに送信されます。メッセージ サービス サブシステムは、メッセージ フラグを「送信可能」状態に変更します。 リアルタイム メッセージング サービスにメッセージを送信: メッセージのステータスが変更されると、メッセージはすぐにリアルタイム メッセージング サービスに送信されます。次に、メッセージはメッセージ サービスのコンシューマーによって監視され、消費されます。 メッセージ ステータス サブシステム: スケジュールされたタスク システムに相当します。メッセージ サービス サブシステム内でタイムアウトが確認されたメッセージを定期的に検索し、また、アクティブなアプリケーション システム内で正常に処理されなかったタスクを定期的に検索し、対応する処理を実行します。 メッセージの消費: メッセージが消費されると、ACK がリアルタイム メッセージング サービスに送信され、その後、リアルタイム メッセージング サービスによってメッセージが削除されます。同時に、メッセージ サービス サブシステムが呼び出され、メッセージが「消費済み」状態に変更されます。 メッセージ回復サブシステム: コンシューマーがメッセージを返すときに、ネットワークの中断やその他の理由によりメッセージが時間内に確認されない場合、メッセージ回復サブシステムは、メッセージ サービス サブシステムで確認されていないメッセージを定期的に見つける必要があります。パッシブ アプリケーション システムのインターフェイスはべき等であるため、未確認メッセージをリアルタイム メッセージング サービスに入れてやり直します。 2) 利点: メッセージ サービスは独立して展開、保守、拡張されます。 メッセージ ストレージは、必要に応じてさまざまなデータベースと統合できます。 メッセージ サービスは同じ使用シナリオで使用できるため、重複するサービスを構築するコストが削減されます。 分散サービス アプリケーションの設計と開発の観点から、メッセージ データの信頼性が実現されます。メッセージ データの信頼性は MQ ミドルウェアに依存しないため、MQ ミドルウェアの特性への依存が弱まります。 ビジネス システムとメッセージ システム間の結合が軽減され、システムの拡張と保守に役立ちます。 3) デメリット: メッセージを送信するには 2 つのリクエストが必要です。 アクティブアプリケーションシステムでは、業務運用状況の検証および照会インターフェースを実装する必要があります。 メッセージサービスサブシステムの設計と実装 サンプルメッセージデータテーブル: |
<<: 企業のクラウドコンピューティングコストを管理するための4つのヒント
>>: Elasticsearch分散アーキテクチャの原則は、私たちが本当に知っておく必要があり、非常に重要です
今日、厦門SEOはA5ウェブマスターのウェブサイトで記事を見ました。タイトルは「ウェブマスターはウェ...
現在、クラウド コンピューティングを利用して企業のデジタル変革を加速することは、ほとんどの企業の間で...
月収10万元の起業の夢を実現するミニプログラム起業支援プランポジショニングの父であるトラウトが広告の...
最近、WeChatパブリックプラットフォームアカウントをインターネット上で披露する傾向があり、さまざ...
クラウド コンピューティング プラットフォームはコモディティ ビジネスです。当然ながら、クラウド コ...
海外メディアの報道によると、Mobile Expertsは最近、エッジコンピューティングに関するレポ...
「コンテンツは王、外部リンクは皇帝」という昔ながらの理論は、ウェブマスターのSEO最適化の考え方の中...
デジタルヒューマンは、現実世界を仮想世界に反映したものとして、仮想世界の中核資産であり、メタバースの...
Cloudcone は今年の独身の日 (11.11) に 2 つの安価な VPS を導入しました。こ...
人工知能は、医療、金融から製造、小売に至るまで、さまざまな業界を急速に変革しています。タスクを自動化...
一般的なビジネス マネージャーであれば、製品の売上と資本収益を毎日気にするでしょう。また、大規模なネ...
コンテンツこそが王様という考え方は業界でますます受け入れられ、SEO の典型的な例とみなされるように...
akkocloudはどうですか? AkkoCloud US CN2 GIA VPSはいかがでしょうか...
近年、オンラインプロモーションをいち早く取り入れた中小企業が、その恩恵を享受しています。世の中には予...
実際、インディアンが誰に対しても罪を犯したことがないのと同じように、セカンドレベルドメイン名は誰に対...