分散トランザクションとは何ですか?銀行間送金業務は、典型的な分散型トランザクションのシナリオです。 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について深く理解して頂けたのではないかと思います。 |
人工知能からビッグデータ、クラウドコンピューティングまで、新しいテクノロジーの革命はあらゆるところで...
1. 分析1. ウェブサイトとターゲット顧客を分析します。まず顧客の属性を調べます。ターゲット顧客が...
クラスター リソースが不足している場合、Cluster Autoscaler は新しいノードをプロビ...
2004年に設立されたFishnet Сommunicationsは、RNET、vStoike、Ve...
ショッピングリベートが届くまで10日以上かかるオンラインショッピングは安く、リベートを利用すればさら...
クラウドベンダーはさまざまなベンダーの GPU ベースの機能に投資しているため、企業は AMD と ...
以下は、Web サイトの計画に携わるすべての友人に捧げる、概念的な検索エンジン マーケティング (S...
本日、マイクロソフトは Inspire 2021 カンファレンスで Windows 365 Clou...
racknerdはどうですか? racknerdは良いですか? Hostcat は、公式のものを除い...
Hostus の最新の公式イベント: すべての KVM 仮想 VPS が 20% オフ。Hostus...
onetechcloudは現在、香港CN2回線、ロサンゼルス往復CN2 GIA回線、ロサンゼルス往路...
[要約] 秘密権使用者の特徴は、若く、教養が高く、活力があり、新しいものを好むことです。彼らは家にこ...
このタイトルを思いついたとき、私はまだウェブサイトの宣伝に取り組んでいました。しかし、時代は変わり、...
Dogyun は、香港-KC データセンターだけでも複数の回線を保有しています。本日は、「香港-KC...
私は数年にわたり SEO に携わってきました。最適化についてはあまり詳しくありませんが、業務をこなし...