分散トランザクションとは何ですか?銀行間送金業務は、典型的な分散型トランザクションのシナリオです。 A が銀行間で B に送金する必要がある場合、2 つの銀行のデータが関係します。転送の ACID は、データベースのローカル トランザクションでは保証できず、分散トランザクションを通じてのみ解決できます。 分散トランザクションとは、トランザクション イニシエーター、リソースとリソース マネージャー、およびトランザクション コーディネーターが分散システムの異なるノードに配置されていることを意味します。上記の転送業務では、ユーザーA-100操作とユーザーB+100操作は同一ノード上に存在しません。本質的に、分散トランザクションは、分散シナリオでデータ操作が正しく実行されるように設計されています。 TCC 分散トランザクションとは何ですか? TCC は Try、Confirm、Cancel の略です。これは、2007 年に発表された「分散トランザクションを超えた生活: 背教者の意見」と題された論文の中で、パット ヘランドによって初めて提案されました。 TCC構成TCCは3つの段階に分かれています
TCC 分散トランザクションには、従来の XA 分散トランザクションと同じように、次の 3 つの役割があります。
銀行間送金に似た業務を行う場合、送金 (TransOut) と入金 (TransIn) は異なるマイクロサービスに存在します。正常に完了した TCC トランザクションの一般的なシーケンス図は次のとおりです。 TCC実践上記の銀行間振替操作の場合、最も簡単な方法は、Try 段階で残高を調整し、Cancel 段階で逆方向に残高を調整し、Confirm 段階では何も操作を行わないことです。これを実行すると、A がお金をうまく引き落とすと、その金額が B に送金されず、最終的にロールバックされて、A の残高が初期値に調整されるという問題があります。この過程で、A が自分の残高が差し引かれたことに気付いたが、受取人 B が長期間その残高を受け取っていない場合、A に問題が生じます。 より良い方法は、Try 段階で A の送金金額を凍結し、Confirm 段階で実際の控除を行い、Cancel 段階で資金の凍結を解除することです。こうすることで、ユーザーが見るデータはどの段階でも明確になります。 次に、TCC取引の具体的な開発を行います。 現在 TCC で利用できるオープン ソース フレームワークは主に Java 言語であり、seata が最も代表的です。この例では Python 言語を使用し、使用される分散トランザクション フレームワークは https://github.com/yedf/dtm です。これは分散トランザクションを非常にエレガントにサポートします。 TCCの構成について詳しく説明します。 まず、ユーザー残高テーブルと凍結資金テーブルの 2 つのテーブルを作成します。テーブル作成ステートメントは次のとおりです。
取引テーブルでは、trading_balance は取引される金額を記録します。 まず、資金を凍結/解凍するためのコアコードを記述します。制約balance+trading_balance >= 0 がチェックされます。制約が保持されない場合、実行は失敗します。
次にバランスを調整します
次に、具体的なTry/Confirm/Cancel処理関数を書いてみましょう。
この時点で、各サブトランザクションの処理機能は正常であり、TCCトランザクションが開かれて分岐呼び出しが行われます。
この時点で、完全な TCC 分散トランザクションが書き込まれました。 完全な成功例を実行する場合は、dtmcli-py-sample プロジェクトの指示に従ってください。 TCC ロールバック銀行がユーザー2に金額を振り込む準備をしているときに、ユーザー2の口座に異常を発見し、失敗を返した場合はどうなりますか?この状況をシミュレートするためにコードを変更します。
これはトランザクション失敗の相互作用のタイミング図です これと成功した TCC の違いは、サブトランザクションが失敗を返すと、その後グローバル トランザクションがロールバックされ、各サブトランザクションのキャンセル操作が呼び出されて、グローバル トランザクションが完全にロールバックされるようになることです。 TCCネットワーク異常TCC のグローバル トランザクション プロセス全体にわたって、空のロールバック、べき等性、中断など、さまざまなネットワーク例外が発生する可能性があります。 TCC の例外は SAGA や信頼性の高いメッセージングなどのトランザクション モードに似ているため、この記事では、分散トランザクションの最も古典的な 7 つのソリューションの例外処理セクションで、例外に対するすべてのソリューションについて説明します。 まとめこの記事では、TCC の理論的知識を紹介し、通常の正常な完了と正常なロールバックを含む、TCC トランザクションの記述プロセスの完全な例を示しました。この記事を通じて読者の皆様にはTCCについて深く理解して頂けたのではないかと思います。 |
「クラウド コンピューティングが、5 人の若い有名人の結婚と、Weibo での 4 人の有名人の浮気...
10月28日、「スマートで美しい成都都市、有望なファーウェイ成都都市サミット2020」が成功裏に開催...
6月8日、「山と海が抱く、雲と未来」をテーマにした2022年中国電子クラウドイノベーション製品発表会...
今日と明日の百度の調整に直面して、草の根ウェブマスターである私たちに何ができるでしょうか? 私たちに...
MoeCloudはダブルイレブンのプロモーションを逃しましたが、遅くてもやらないよりはましです。公式...
中国ではSina WeiboなどのSNSがますます影響力を増し、FacebookのトラフィックがGo...
VPS事業のHostenは、ロサンゼルス、ニューヨーク、ジャック・ウィアーに続き、米国ネバダ州ラスベ...
Microsoft は Windows Virtual Desktop を積極的に推進しており、従来...
あなたのサイトのランキングは停滞していますか?あなたのサイトのトラフィックはいつも少ないですか?Ba...
ソフトコンテンツマーケティングは、近年広く普及しているオンラインマーケティング手法です。しかし、著者...
SimpleNode をまだ覚えていますか?ニュージーランドに登録された会社。2000年に設立された...
世界的に有名なフルマネージド ホスティング プロバイダーである Hostdime.com は、5 月...
1運用・保守側からの教訓運用保守側の中心的な目標は、Kubernetes クラスターの安定性を確保す...
中国におけるインターネットの台頭に伴い、多くの伝統的な企業がインターネット プラットフォームに目を向...
ブランドとは何ですか? ブランドとは、企業とその企業が提供する商品やサービスの包括的な識別を指します...