複数の実装ドライスプリット分散トランザクション(層の理論数)

 

2PC間違って行くことはありません提出グローバル・トランザクションを考えます。
2段階の原理は、リソース・マネージャによって提出された長いトランザクションのグループを管理します。
トランザクションマネージャあたりエクスプローラ1は、データ変更の後に行うように言われ、単一のトランザクションの前に提出されていない、と私は終わっRMを伝え、あなたが提出することができます
2をトランザクションが失敗があった場合にも、失敗した、ので、我々は提出していませんRMサービスの発表は、私たちが一緒にロールバックするように
、私たちすべてが処理ロジックに行けば3は、ここに提出することを行き、RMは、すべてのデータベーストランザクションをRM提出し、すべてのトランザクションが提出されました。
4明白な疑問は、中断気付くことはありません提出バッチトランザクションがあります(このステップを提出するデータベースは、我々は彼が例外をスローしませんが、死んRM可能性があると考えている何のロジック実行が存在しない、いくつかは、予告RMませんでした)
5 RMは、予告に他の死んだのA RM RMがありますので、利用可能行う必要があります。
6 RM、高可用性、およびデータベースは、トランザクションログによって、RM、彼は立ち上がってそうした後、2PCないすべてのデータベースのサポート、大きなデータベース・トランザクション・ログ、ハードディスクの書き込み、私たちはデータベースのサポートを必要とするこれを行うにはどのように死にましたその上でトランザクションを再送信してください。


明らかな欠点、長いトランザクション時間、大規模なロックの努力、およびデータベースをサポートするために必要な最後のステップを提出する必要があります。


終わりのTCCしようとすると、前のリソース、およびオペレーティング予備リソースは、トランザクションをコミットしようとします。

いくつかの試みが成功した場合は1、後者はまた、行う(リソースの叫びがロック解除する使用を中止)キャンセル前回の試行の失敗と成功の実装をロールバックしようとすると、冪等あればキャンセルしようとしないでください。
図2は、リソースが予約されているため、すべての試みは、その後、かご確認ください、かご確認ください試して成功した場合ので、(コーディングの問題ではありません)失敗しない主観的な理論かご確認くださいを考えるだけでなく、かご確認ください冪等を達成するために。
3通常の実行まああれば、確かにデータがかご確認くださいキャンセルなぜ、冪等がそれを必要とする、一貫性のでしょうか?
4いくつかの試みが失敗した場合、(単一の前に提出されていない、バックをロールすることができますしてみてください)現在のロールバックしようと、試みの前に、このノードをキャンセルする呼び出しをキャンセルし、提出されましたが、別のバッチで、唯一の成功は、すべての成功を収めました
失敗した以上(RMは部分をぶら下げた後、コールをキャンセル、または部分的にコード発行例外を取り消すなど)の場合。次に、分散トランザクションの状態が完了していません。次にエクスプローラ生きている、またはしばらくしてからトランザクションを呼び出しキャンセルに失敗しました。
ここではいくつかの人々が疑問を持って、ちょうどそれらすべてを呼び出すことはありません、うん失敗したかを知る必要があり、RMは?この質問は別のネットワークに来て、ネットワーク通信は、我々は彼が成功して対処しなければならないと信じて、治療の成功を受けて、没収場合成功するために、それはまた、(、プロセッサが行ってあなたが失敗した応答時間、または応答タイムアウト)を行っている可能性
したがって、障害が行っているかもしれない、唯一の成功は成功です。
図5は、上記のプロセスをキャンセルします。RM分散トランザクション状態管理解除さは、これは理論的には元のデータの状態に戻すことができます。

6かご確認ください時間を言って。グループの必要性をかご確認くださいの同じバッチが、これはええ、アプローチを失敗し、同じようにキャンセルされます。状態の分散トランザクションの失敗は完了しません。それが失敗した場合には、かご確認ください一度再呼ばれます。
でも、ノードに障害が発生しているに送信され、それが必要な冪等で、ネットワーク通信の問題への呼び出しが繰り返されます。各かご確認くださいが成功していることを確認してください、だけでなく、ネットワークは多くの理由を呼び出すために失敗したと見なさ場合でも、また、一貫性のあるデータであることを保証します。

要約TCCの情勢では、すべての独立した小企業をキャンセル、かご確認ください、してみてください、そして、データの整合性を確保することができます。データベースには、特別な支援を必要とする行に業務を持っていません。

メッセージキュー(MQ)で利用可能に基づいて、消費者のメッセージサーバによって備考が実装されている(ローカルニュース、または別々のメッセージ)を達成するために、あなたは、ここでのニュースサーバーがメッセージを処理するトランザクションを分散されないことができ、それはMQを参照していません。


1つのローカルニュースは、同じトランザクション内のテーブル、および現地情勢を持っています。その他のサービスコールの処理には、ローカルデータベースへのローカルニュースや永続性を重要とき。(ローカルトランザクション処理とメッセージデータが同じトランザクション、強い一貫性である)
トランザクションは、メッセージを送信するために、2をコミットし、メッセージが送信としてマークされている、完了していないとき。
サーバ3の消費後にこのメッセージマーカー、Aに正常な応答、メッセージが正常に送信されたフラグを受信します。Aあなたが気にすることはできませんので、あなたはBを完了するために、消費者を保持することができます
4ニュース・サーバメッセージはニュースだけコピーユニークなID、メッセージサーバ側に保持することを持っている必要がありますので、あなたが繰り返し、このメッセージを受け取ることができます。
5ニュース・サーバがメッセージを受信し、Bがメッセージをマークし、このメッセージのBの消費電力ならば、ニュースを消費するようにしましょうが完了すると、あなたは返信しないことがあり、Aに応答する必要があるかもしれません。Bプロセスが失敗した場合は、サーバー・メッセージが再送される必要があります。
図6は、次いで、メッセージB、それは冪等でなければならないBのように繰り返すことができます。
7つの表面荒れプロセスは、我々は、メッセージが送信された後にトランザクションがコミットされたときに、メッセージが送信され、この方法は、送信に失敗したメッセージを送信することができ、いくつかのコントロールを参照するために見えるが、それは(ネットワーク環境の送信が失敗し、メインロールバックにトランザクションに影響を与えてはなりません実際に)行かなかった必ずしも


明らかに、効率のこの種は比較的高い、任意のリソースマネージャに依存しない、地元の情勢に依存して、分散ロックです。3エンコード側は書いていないが、彼は同時に、ロールバックすることはできません、我々は結果整合性のみを保証することができます。学生は同月求めるが、同じ月のために死んません。












分散トランザクションフレームワークと同様のTX-LCN

 

 


その結果として、より高度な分散フレームワークはアリハンによって開発された.........

 

おすすめ

転載: www.cnblogs.com/cxygg/p/12464016.html