知人Seata:分散トランザクションミドルウェアSeataは、シリーズの一つを学びます

入門

マイクロサービスは、新しいトピック、マイクロサービスの変革とそれに関連する探査と実践の仕事を作るより多くの企業ではありません。フレームワークは、例えば、より適切になりSpring CloudDubboすべて非常に良い分散フレームワークです。運用結合を低減しながら、迅速な開発における分散型サービスは、私たちに独立した展開を多くの利点をもたらした、それはまた、高いメンテナンスコストをもたらし、特にトランザクションを分散させ、システムの複雑さやその他の問題を増加させました。現在の市場は、分散トランザクションのためのソリューションの数を持っていますが、一つの方法または別の問題が多かれ少なかれあります。記事のこのシリーズは、アリババは、オープンソースのソリューションを分散に焦点を当ててSeata分散トランザクションの痛みのポイントの問題を解決する方法です。

  • どのようなトランザクション分散されます
  • 現在の分散トランザクションの痛みのポイント
  • Seataそれは物語の背後にあります
  • 概要

まず、分散トランザクションは何ですか

コンセプト情勢は、我々はより明確に、ここで簡単に復習が必要です。いくつかのものは、操作を完了する必要があり、トランザクションがすべての操作が正常に完了した場合にのみ、このユニットは、完全な提出を行うことができ、実行ユニットにおける実行の単一不可分の単位にこれらの操作をラップすることです。しかし、ユニットは任意の操作が失敗している場合、ユニット全体が、彼らはそう総務蠍座を話すように、操作の前に持っていた、または、彼らはすべての愛か愛する状態にロールバックする必要性をコミットすることはできません、半分になることはありません砂糖教義。何もしない、または完全なセットを行うにはどちらかと言ったよう(All or Nothing)
ここに画像を挿入説明
いわゆる分散トランザクションは、分散システムの異なるノードで異なるサーバー上に配置されている取引参加者、トランザクションサーバ、サーバとトランザクションマネージャリソースです。別のサーバー・ノード上に分散されている様々な操作でトランザクションを完了するために、単純である、分散トランザクションサーバは、いずれかのこれらの異なる操作が成功するか失敗することを確認する必要があります。

生成主に分散トランザクションが進化高速マイクロサービス、ならびに分散トランザクション問題の物理的基盤を築くためにサービスノード分散資源ノードの継続的な拡大を伴います。

第二に、現在の分散トランザクションの痛みのポイント

分散トランザクション以来マイクロサービス改革に顔に我々が持っている問題を作り、道を開く、その解決のための問題が今ありますか?私たちは一緒に見てください。分散トランザクションのためのソリューションは、コンシューマ事業に侵入し、非侵入に分けることができます。

図1に示すように、二段階プロトコルデータベース提出XA(2PC)方式に基づいて
動作態様の非侵襲的な実装です。これは、サポートXAプロトコルにローカルデータベースを必要とし、XAプロトコル自体の特性により、それが取引になりますので、ロックされたサイクルが長い、長い時間のためのリソースを解放するだけでなく、介入することはできません上記のアプリケーション層ではないことパフォーマンスの低下、そのかなりので、インターネットは、この溶液中で非常に人気のアイテムではありませんので、7件の傷害ボクシングのように「7を負傷、3点を失います」。

使用二相は、XA仕様では、2フェーズ・コミット・プロトコルをの基本である、グローバルトランザクションを完了するためにコミットします。
第一段階投票フェーズで、すべての参加者が、コーディネータに送信されるフィードバックの成功に取引に関する情報を提示する。第二段階は、実装段階、すべての参加者からのフィードバックのコーディネータである、一斉にすべての参加者に通知しますすべてのブランチがコミットまたはロールバック。
ここに画像を挿入説明
ここに画像を挿入説明

2、TCC(Try-Confirm-Cancel)プログラム

TCC補償機構が実際に使用され、コアのアイデアは、各動作のために、登録確認及び補償は、対応するべきである(元に戻す)アクション。それは3つの段階に分かれています。

(1)しようと
準備クラスのステータス、データの凍結部分を設定し、リソースをロックすることが一般的。簡単に言えば、党と呼ばれるすべてのビジネス関連事業のリソースを通知するために予約されています。

(2)確認
肯定応答リソース操作は、各サービス側を行っ

(2)キャンセル
リソース操作は、各事業のパーティーを行っキャンセル

第三には、Seata物語の背後にあります

1.は何ですかSeata
Seata(Simpe Extensible Autonomous Transcaction Architecture)那么什么样的分布式事务解决方案才是好呢,我想应该是对于现有业务无侵入同时满足高性能的解决方案。 Seata`は、高性能、使いやすさとビジネス上のゼロ侵入マイクロソリューションのための分散トランザクションサービスです。

以下に示すように、あなたが見ることができるSeata分散トランザクションを解決する方法を、以下のデザインのアイデアSeata分散トランザクションは、分岐トランザクションの数の下にぶら下がって、グローバル・トランザクションとして理解されるべきである、とトランザクションはブランチです私たちは地元の情勢などの分散トランザクション操作として動作することができますので、ACIDは、ローカル・トランザクションを満たしています。:、トランザクションブランチと維持管理のグローバル・トランザクションの状態を処理するための3つの基本的な構成要素が含まれています以下の通りである。(1)トランザクションコーディネータ(TC) トランザクションコーディネーターを。コミットまたはロールバックするグローバル・トランザクションを駆動し、業務や支店のグローバルな状態を維持します。(2)トランザクションマネージャ™:トランザクションマネージャ。グローバル・トランザクションの定義の範囲、グローバル・トランザクションを開始し、トランザクションをコミットまたはロールバック。(3)リソースマネージャ(RM) リソースマネージャ。支店総務の操作でリソース管理は、登録分岐権利および業務支店のレポートのステータスを含むトランザクションコーディネーター、と共同で、分岐トランザクションがロールバックを提出駆動。以下に示すように:私たちは、と見て以下では、実質的にグローバルトランザクションステップ:
ここに画像を挿入説明
Seata




ここに画像を挿入説明
Seata

(1)TMTC、グローバル分散トランザクションのアプリケーションを開いてTCグローバルにユニークなグローバル・トランザクション・リターンを作成した後XIDXIDコンテキストに広がっていくには、マイクロ全体グローバル・トランザクション・サービスを必要とする;
(2)RMするTC枝に、トランザクションの帰属をトランザクションのローカルブランチを登録します同じ有するXIDグローバル・トランザクションと、
(3)TMするTC応答に対応し、コミットまたはロールバックグローバル・トランザクションを開始するXID;
(4)TCスケジューリング及び駆動XIDバック完了したトランザクションのコミットまたはロールの分岐。
ここに画像を挿入説明
2、導入プロジェクト
のプロジェクトでは、Mavenの導入されました

<seata.version>0.8.0</seata.version>

<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>${seata.version}</version>
</dependency>

IVの概要

強調しながら、本論文では、分散トランザクションの既存の概念と現在の分散トランザクションの欠点を説明するSeataだけでなく、優位に分散トランザクション処理を。

88元記事公開 ウォン称賛49 ビューに10万+を

おすすめ

転載: blog.csdn.net/Diamond_Tao/article/details/100045132