Seata 中国語参考資料: http://seata.io/zh-cn/docs/overview/what-is-seata.html 序文 前回の記事「分散トランザクション ソリューションと理論的基礎の概要」で分散ソリューションに関連する概念を紹介した後、この記事では、Spring Cloud Alibaba によってオープン ソース化された分散ソリューション フレームワークである Seata を紹介します。この記事では、Seata コンポーネントに関連する概念について説明します。実際にSeataを使って分散トランザクションの問題を解決したい場合は、次の記事を読んでください。 1. マイクロサービス アーキテクチャとは何ですか? 「マイクロサービス アーキテクチャとは、単一のアプリケーションを小さなサービスのグループに分割し、それらのサービスが互いに連携して動作することで、ユーザーに究極の価値を提供することを提唱するアーキテクチャ パターンです。各サービスは独自の独立したプロセスで実行され、軽量の通信メカニズム (通常は HTTP ベースの Restful API) を使用してサービス間で通信します。各サービスは特定のビジネスを中心に構築されており、実稼働環境、準実稼働環境などに個別に展開できます。また、統一された集中型のサービス管理メカニズムは可能な限り避ける必要があります。特定のサービスについては、ビジネス コンテキストに応じて適切な言語とツールを選択して構築する必要があります。」 2. 分散トランザクションの生成 1. モノリシックアーキテクチャ 単一のアプリケーションでは、ユーザーの完全な注文プロセスには、注文インターフェイスを呼び出し、在庫控除メソッドを呼び出し、注文時に口座残高を控除することによって注文を完了するために、1 つのプロジェクトと 1 つのデータベースのみが必要です。 2. 分散アーキテクチャ モノリシック アプリケーションはマイクロサービス アプリケーションに分割され、元の 3 つのモジュールはそれぞれ異なるデータ ソースを使用する 3 つの独立したアプリケーションに分割されます。ビジネスオペレーションを完了するには、3 つのサービスを呼び出す必要があります。このとき、各サービス内のデータの一貫性はローカルトランザクションによって保証されますが、グローバルなデータの一貫性の問題は保証できないため、分散トランザクションが発生します。 3. Seataの4つの取引モード 1. シータとは Seata は、高性能で使いやすい分散トランザクション サービスを提供することを目的としたオープン ソースの分散トランザクション ソリューションです。 Seata は、ユーザーに AT、TCC、SAGA、XA トランザクション モードを提供し、デフォルトで AT モードを使用して、ユーザー向けのワンストップ分散ソリューションを作成します。 2. ATモード 前提
全体的なメカニズム 2PC 2 フェーズ コミット プロトコルの進化:
書き込み分離
読み取り分離 1) データベースのローカル トランザクション分離レベルが Read Committed 以上である場合、Seata (AT モード) のデフォルトのグローバル分離レベルは Read Uncommitted になります。 理解: グローバル トランザクションがコミットされる前に、ローカル トランザクションが最初にコミットされます。現時点では、データのクエリは、ローカル データベースの場合は Read Committed で、グローバル データベースの場合は Read Uncommitted で実行されます。 2) グローバル読み取りコミットが必要な場合、Seata は現在 SELECT FOR UPDATE ステートメントのプロキシを使用します。 3. TCCモード TCC は RM の分散トランザクションのサポートに依存せず、ビジネス ロジックを分解して分散トランザクションを実装します。
いわゆる TCC モードとは、カスタマイズされたブランチ トランザクションをグローバル トランザクションの管理に組み込むためのサポートを指します。 4. SAGAモード 概要 Seata はロングトランザクションソリューションを提供します。 Saga モードでは、ビジネス プロセスの各参加者がローカル トランザクションを送信します。参加者が失敗した場合、以前に成功した参加者に補償します。第一段階のポジティブサービスと第二段階の補償サービスは、いずれも事業開発によって実施されます。 適用可能なシナリオ:
利点:
欠点: 隔離は保証されない ステートマシン エンジンに基づく Saga 実装。 現在 SEATA が提供している Saga モードは、ステート マシン エンジンに基づいて実装されています。メカニズムは次のとおりです。
状態図の例: 5. XAモード 前提
全体的なメカニズム Seata で定義された分散トランザクション フレームワークでは、XA プロトコルのトランザクション リソース (データベース、メッセージ サービスなど) のサポートと XA プロトコルのメカニズムを使用して、トランザクション モードを使用してブランチ トランザクションを管理します。 実行フェーズ:
完了段階:
ここでは、XA モードについて簡単に説明します。詳細については、http://seata.io/zh-cn/docs/dev/mode/xa-mode.html を参照してください。 4. シータモデルの紹介 Seata のプロセス モデル全体を次の図に示します。 上の図には主に 3 つの役割があります。
用語の紹介:
一般的な分散トランザクション プロセスには、次の手順が含まれます。
フローチャートは次のとおりです。 5. シータアーキテクチャについて アリババは早くも2019年に、分散トランザクションフレームワークSeata(当初Fescarと名付けられていた)をオープンソース化しました。その後、Ant の TCC ソリューションとの統合により、Seata に名前が変更されました。 2020年11月3日現在、Seataはバージョンv1.4.0に更新されました。以前のバージョンのリリースではいくつか潜在的な問題がありましたが、オープンソース チームがすぐに問題を修正し、新しいバージョンを迅速に反復してリリースしたため、現在は比較的安定しています。 同時に、他の分散トランザクション フレームワークと比較すると、Seata アーキテクチャのハイライトは次のとおりです。
6. 参考資料 Seata 中国語公式文書: http://seata.io/zh-cn/docs/overview/what-is-seata.html Seata-Server のダウンロード アドレス: https://github.com/seata/seata/releases 分散トランザクションのデモ: https://github.com/seata/seata-samples Seata ソースコード アドレス: https://github.com/seata/seataSeata 中国語リファレンス ドキュメント: http://seata.io/zh-cn/docs/overview/what-is-seata.html |
>>: クラウドへの変換はどれくらい簡単ですか?変革の苦痛を解消するために、Mobvistaはクラウドネイティブへの投資を増加
Hostodo のアジア最適化 VPS は、以前の QN データセンターの「アジア最適化」路線を踏襲...
海外メディアの報道によると、アメリカの配車サービス「ウーバー」の評価額はわずか4年でゼロから驚異の1...
あらゆる資本企業にとって、その運営の目的は、最小限の投資で最大限の利益を得ることに他ならないと私は考...
現在、Weibo を通じたマーケティングは重要な手段の 1 つになっています。Weibo はすぐに共...
itldc の夏のプロモーション: すべての VPS が 50% オフ。初回支払いのみ、更新は通常価...
最近、私はブログを書くのに忙しく、ブログのランキングにも気を配っています。毎日定期的にブログ記事を更...
いわゆる口コミマーケティングとは、人々の間で口コミを通じて企業の製品やサービスを宣伝し、それによって...
bacloud は現在、すべての VPS が 12% オフとなるハロウィーン プロモーションを実施し...
長らく噂されていた「生鮮食品電子商取引第一号株」がついに明るみに出た。最近、生鮮食品小売分野のリーダ...
Magic Cube Cloud は、Dragon Boat Festival プロモーションを提供...
Raksmart は今月、大規模な VPS プロモーションを開催しています。1G メモリと無制限トラ...
2018 年 11 月 13 日、上海 - Linux Foundation が主催する毎年恒例のオ...
初心者でも経験豊富な SEO 担当者でも、最適化のボトルネックに遭遇し、主に内部最適化分析、キーワー...
5月21日、2019年テンセントグローバルデジタルエコシステムカンファレンスが昆明の滇池国際会議展示...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス個人ウェブマスターは、長...