Alibaba 分散ミドルウェア Seata 入門から習得まで

Alibaba 分散ミドルウェア Seata 入門から習得まで

[[434878]]

現在、Alibaba の分散トランザクション ミドルウェア Seata に関する電子書籍を執筆中です。 Seata は、AT、TCC、Saga、XA の 4 つのモードを備えた、最も完全な分散トランザクション ミドルウェアと言えます。現在、Seata はバージョン 1.4.2 に更新されています。

この電子書籍は主に2つの部分に分かれています。最初の部分は入門学習で、更新されました。 2 番目の部分はソース コードの解釈です。 Seata のソースコードはよく書かれており、読む価値があります。

本書全体の現在のディレクトリ構造は次のとおりです。

気に入ったお友達はぜひダウンロードして勉強してください。入手方法:公式アカウントをフォローして裏で返信:Seata。

以下は、Seata の 4 つのモードの簡単な紹介です。

ATモード

AT モードは、単一データベースのトランザクション原理を指します。分散トランザクション内の各データベースは、単一のデータベースのテーブルとして扱うことができます。まず、各トランザクションには xid と呼ばれるグローバル トランザクション ID があります。この xid を使用すると、この xid に対応するロールバック データを記録する undo_log を記録できます。各トランザクションを送信する前に、まず undo_log を書き込んでからトランザクションを送信する必要があります。これは MySQL の WAL メカニズムを指します。 rollback_info フィールドは、ロールバックするテーブルのレコード内の各フィールドと対応する値を記録するため、ロールバックを簡単に実行できます。

AT モードの 2 フェーズ コミットは次のとおりです。

  • フェーズ 1: ビジネス データとロールバック ログ レコードが同じローカル トランザクションでコミットされ、ローカル ロックと接続リソースが解放されます。
  • フェーズ 2: 非同期コミット、非常に迅速に完了しました。ロールバックは、第1段階のロールバックログを通じて逆補正を実行します。

AT モードでは読み取りと書き込みの両方が分離されており、ここで簡単に説明します。

書き込み分離

フェーズ 1 のローカル トランザクションをコミットする前に、まずグローバル ロックを取得していることを確認する必要があります。

グローバル ロックを取得できないため、ローカル トランザクションをコミットできません。

グローバル ロックを取得しようとすると、タイムアウト制限が設定されます。時間制限を超えると、試行は中止され、ローカル トランザクションがロールバックされてローカル ロックが解放されます。

上記は公式サイトの説明ですが、非常に分かりやすいです。グローバル ロックを取得できない場合、ローカル トランザクションは送信できず、タイムアウトするまでグローバル ロックを待機することしかできません。

読み取り分離

AT モードでの読み取り分離では、ローカル トランザクション分離レベルが Read Committed 以上である必要があります。 AT モードのデフォルトのグローバル分離レベルは、Read Uncommitted です。

アプリケーションが特定のシナリオでグローバル読み取り送信を必要とする場合、Seata は SELECT FOR UPDATE ステートメント プロキシを通じてそれを実装する必要があります。

SELECT FOR UPDATE ステートメントの実行はグローバル ロックに適用されます。グローバル ロックが他のトランザクションによって保持されている場合、ローカル ロックは解放され、ステートメントが再試行されます。このプロセス中、グローバル ロックが取得されるまでクエリはブロックされます。

TCC モード

簡単に言えば、TCC モードは、トランザクション全体を 2 つの段階に分けて送信することです。試行段階ではリソースを予約します。すべてのブランチが正常に予約されると、コミット ステージに入り、すべてのブランチ トランザクションが送信されます。それ以外の場合は、すべてのブランチ トランザクションをキャンセルするために cancel が実行されます。

電子商取引システムを例にとると、注文、在庫、アカウントの 3 つのサービスがある場合、顧客が商品を購入すると、注文サービスが注文を追加し、在庫サービスが在庫を差し引き、アカウントサービスが金額を差し引きます。これら 3 つの操作はアトミックである必要があり、すべてが成功するか、すべてが失敗するかのいずれかになります。

トライフェーズ

以下のように表示されます。

注文サービスは注文を追加し、在庫サービスは注文の在庫を凍結し、アカウントサービスは注文の金額を凍結します。この段階で、データは中間状態になります。

コミットステージ

以下のように表示されます。

コミットフェーズでは、データが中間状態から最終状態に転送されます。たとえば、注文金額は中間アカウントから最終アカウントに転送されます。

キャンセル フェーズはコミット フェーズと似ており、たとえば、注文金額は中間アカウントから顧客アカウントに返されます。

サガパターン

Saga モードは、長いプロセスのビジネス シナリオに適しており、ステート マシンを使用してトランザクション全体の実行を制御します。状態図を使用してサービス呼び出しプロセスを定義し、Json 状態言語定義ファイルを生成します。状態図のノードは、サービス ノードまたは補償ノードになります。

次の図は、電子商取引システムのビジネス プロセスを定義しています。このフローチャートに基づいて、ステート マシンで使用するための Json ファイルを定義できます。

XA モード

XA モードでは、ブランチ トランザクション データベースが XA プリミティブをサポートする必要があります。この公式写真を見てください:

XA モードの 2 フェーズ コミットは、TCC モードの 2 フェーズ コミットに似ています。どちらも TM によってグローバル トランザクションを開始し、TC にブランチ トランザクションを登録してブランチ トランザクションの状態を報告し、TC はグローバル トランザクションの状態に基づいてブランチ トランザクションをコミットまたはロールバックします。

コード実装に関しては、XA モードはデータ ソース プロキシを使用して実装されます。 TCC モードとは異なり、XA モードでは準備メソッドのみが必要です。

Seata は XA を最適化し、Start を組み合わせます |翻訳1つのステージに準備します。これは MySQL データベースではサポートされていますが、Oracle データベースではサポートされていません。

<<:  複数のシンクライアントディスプレイの設定とトラブルシューティング

>>:  クラウド ネイティブ要素の概要: 抽象エンドポイント

推薦する

商品のネットワーク影響力を素早く向上させる方法(セルフメディア)

今は、商品を作ったり、セルフメディアをやっている人がたくさんいます。どんな新しいものが出てきても、す...

ramnode: 年間 12 ドルから、1G メモリ/1 コア/40g SSD/1T トラフィック、ロサンゼルス/シアトル/アトランタ/ニューヨーク/アムステルダム

非常に信頼性の高い旧ブランドの VPS である Ramnode は、長年特別なプロモーションを行って...

オンライン美術品取引チャネルの急速な拡大は、偽造品の多さから高いリスクがあると非難されている。

広州地方骨董市場新しい取引プラットフォームは諸刃の剣です。便利ではありますが、「山の向こうで牛を買う...

Tencent Cloud IDC製品ファミリーが第7回データセンターシェアリングデーでデビュー

11月25日、第7回テンセントデータセンターシェアリングデーが、国立コンベンションセンター(CDCC...

Iniz-4Gメモリ/SSD/月額6.78ドル/オランダデータセンター

iniz は英国で正式に登録された会社です: 会社番号 08199520、登録事務所住所 45-15...

人気を生み出す:スクリーンスイープのコミュニケーションルーチンをまとめた6つの重要なポイント

月収10万元の起業の夢を実現するミニプログラム起業支援プランXin Shi Xiang はなぜ画面を...

短縮リンクがSEOに影響を与えるかどうかについての考察

まず、新年を迎え、石家荘SEOはA5スタッフ全員と大多数の中小規模のウェブマスターの皆様に新年のご多...

ウェブサイトの記事が含まれていない場合はどうすればいいですか?

Baidu による新規サイトの検査がますます厳しくなるにつれ、ウェブサイトのコンテンツが毎日更新され...

河北省保定市は滴滴出行を協議に招集した。滴滴出行は現在、既存の車両を秩序正しく入れ替えている。

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています概要:10...

大手企業は4億7000万人の中流階級の交通をめぐって競争している

2015年、『エコノミスト』誌は、2015年までに中国の中流階級人口が4億7000万人を超えると予測...

#無制限トラフィック VPS# yoctobox - $15/年/ロサンゼルス/1Gbps/無制限トラフィック

YoctoboxはHost Catが2017年4月に導入したサービスです(設立は2017年8月)。Y...

血と汗を流してまとめた地域不動産ネットワーク推進手法

邯鄲不動産ネットワークの運営を始めて2年が経ちました。この2年間、私は多くの苦労をしてきました。今で...

NetEase、ウェブサイト提携への参入を発表

5月17日、網易は北京で記者会見を開き、ウェブサイト連合の正式発足と総額1億5000万元のウェブマス...

360 Search: 登録されていないウェブサイトの一部は含まれません

中国の検索市場では百度が唯一の支配的プレーヤーであるのに、なぜ360は検索市場に参入したいのでしょう...

モバイル広告トラフィックホワイトペーパーを公開しました!

2018 年の広告業界は天国と地獄のような状況でした。あなたはそれを感じましたか? 2018年は、教...