分散トランザクションは分散システムでよく見られ、大企業でも頻繁に調査されています。以下では、4つの主要な主流の分散トランザクションソリューションについて説明します。@mikechen 分散トランザクション分散トランザクションとは、複数の参加者(通常は異なるコンピュータ ノードまたはサービス)が関与するトランザクション操作のことであり、複数のノードにわたって実行する必要があります。 次の図に示すように: 写真 分散トランザクションでは、データの一貫性と信頼性を維持するために、関連するすべての操作が正常に実行されるか、ロールバックされることを確認する必要があります。 分散トランザクションソリューション一般的な分散トランザクション ソリューションには、主に次の 4 つが含まれます。 2 フェーズ コミット プロトコル2 フェーズ コミット (2PC とも呼ばれます) は、準備と送信の 2 つのフェーズで構成されます。 次の図に示すように: 写真 1. 準備 コーディネーターはすべての参加者に準備要求を送信し、参加者はトランザクションの準備を実行し、準備完了の通知をコーディネーターに送信します。 2. 提出フェーズ すべての参加者の準備が整っている場合、コーディネーターはすべての参加者にコミット要求を送信し、参加者はトランザクションのコミットを実行します。 すべての参加者がトランザクションを正常にコミットすると、トランザクションは正常に完了します。 そうでない場合、いずれかの参加者が失敗したかコミットできない場合、一貫性を維持するためにすべての参加者がトランザクションをロールバックする必要があります。 2PC の利点は、シンプルで理解しやすく、分散システムにおけるトランザクションの原子性と一貫性を理想的に保証できることです。 2 段階アプローチにはいくつかの欠点があります。 1. 詰まりの問題 2PC の準備フェーズでは、コーディネーターはすべての参加者からの応答を待つ必要があるため、システム全体がブロックされる可能性があります。 2. 単一障害点 2PC では、コーディネーターはすべての参加者の操作を調整する責任を負う単一のポイントです。 コーディネーターが失敗すると、参加者のほとんどが準備ができていても、トランザクション全体が完了しない可能性があります。この単一障害点はシステムの可用性と信頼性に影響を及ぼします。 3. データの不整合 2PC は、ネットワーク パーティションやコーディネータと参加者間の通信障害など、すべての障害シナリオを処理できるわけではありません。 この場合、一部の参加者がトランザクションを送信した一方で、他の参加者が送信指示を受け取っていないというデータの不整合が発生し、システムが混乱した状態になる可能性があります。 3相コミットプロトコル3PC と呼ばれる 3 フェーズ コミット プロトコルは、2PC の改良版です。 次の図に示すように: 写真 3PC の主なアイデアは、アトミック性と一貫性を維持しながら、2PC のブロッキング問題を軽減するために事前コミット フェーズを導入することです。 3PC は主に 3 つの段階に分かれています。 1. 提出前段階 コーディネーターは参加者にトランザクションを送信できるかどうかを尋ね、応答を待ちます。参加者全員が同意すれば、次の段階に進みます。 2. 提出フェーズ コーディネータはすべての参加者にコミット要求を送信し、トランザクションをコミットするように要求し、いずれかの参加者がコミットできない場合はロールバックを実行します。 3. 確認段階 コーディネーターは、トランザクションがコミットされたことをすべての参加者に通知する確認メッセージを送信します。このステージは、2PC のブロッキング問題を解決するために使用されます。 2PC に対する 3PC の利点は、最初のフェーズで「照会」フェーズが導入され、2PC の直接準備フェーズで発生する可能性のある長いブロックの問題を回避できることです。 2 段階と 3 段階の比較を次の図に示します。 写真 報酬業務TCC (Try-Confirm-Cancel) は、分散システムで一貫した操作を実現するために使用される補償的なトランザクション処理モードです。 次の図に示すように: 写真 TCC モードは、試行、確認、キャンセルの 3 つの操作フェーズを通じてトランザクションの一貫性を保証します。 1.試してみる 試行フェーズでは、システムはトランザクションが正常に実行されることを確認するために、トランザクション操作に必要なすべてのチェックと準備を実行しようとします。 これには、リソースの可用性の確認、必要なリソースのロックなどが含まれます。すべてのチェックに合格すると、システムは試行されたすべての操作を記録しますが、トランザクションは実際には実行されません。 2. 確認 確認フェーズでは、システムはトランザクションを実行し、以前に試行された操作を確認します。 トランザクション操作が正常に実行された場合、システムはトランザクションを確認してコミットします。この段階で、システムはトランザクションの結果を永続化し、トランザクションの最終的な実行を保証します。 3. キャンセル 試用または確認フェーズ中にエラーまたは異常な状況が発生した場合、システムはキャンセルフェーズに入ります。 この段階では、システムは逆の操作を実行し、前の試行フェーズで実行された操作をキャンセルします。これにより、システム状態がトランザクション開始前の状態にロールバックされ、データの一貫性が維持されます。 TCC モードでは、開発者は各段階で独自のビジネス ロジックと補正操作を定義して、さまざまなビジネス ニーズに適応できます。 ただし、TCC モードでは、開発者が各段階でビジネス ロジックと補正操作を明示的に定義する必要があり、システムの複雑さと開発コストが増加します。各ステージのロジックを設計および維持し、ステージ間の一貫性を確保する必要があります。 最終的な一貫性最終的な一貫性は、分散システムにおける一貫性モデルであり、データのレプリカが一定期間不整合な状態になることを許可しますが、最終的には一貫した状態になります。 次の図に示すように: 写真 結果整合性モデルでは、ノード間のデータ同期は通常、メッセージの受け渡しを通じて実現されます。 ノードのデータが変更されると、他のノードに非同期的にメッセージが送信されます。メッセージの送信は非同期であるため、ノード間のデータ同期に一定の遅延が生じる可能性があります。 したがって、最終的な一貫性モデルでは、ノード間のデータ コピーは一定期間不整合になる可能性がありますが、最終的には一貫した状態に収束します。 |
近い将来、Baidu は外部リンクの状況に重点を置いた、もう一つの大きなアップデートを実施すると思い...
最近、ウェブサイトのSEO業務に携わる多くのウェブマスターが自信を失っていると思います。なぜでしょう...
【要点】オンライン教育の本質とは何か?動画教材を並べれば教育プロセスは完了するのか?もちろんそうでは...
海外のNFT(非代替性トークン)市場は2018年に爆発的な成長を遂げた後、2019年に入って取引量は...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスGoogle SEO に...
Weibo は誕生以来、ユーザーの間でますます人気になっています。Weibo はブログから派生したも...
近年、セルフガイドツアーや海外旅行というコンセプトの関連製品は数多く登場しているが、Qunarなど初...
企業の資金が限られており、販売する製品を複数開発できず、オフラインでの販売が制限され、倉庫に類似製品...
テンセントは8月31日、新刊書籍「テンセントのビッグデータ構築法」の中で、自社の中核となるビッグデー...
Baidu アルゴリズムの継続的な更新により、ますます多くの最適化担当者が最適化サークルに閉じ込めら...
ウェブサイトサーバーの構築に Windows プラットフォームを使用するかどうかは、ウェブサイト管理...
ウェブサイトの改訂は多くのウェブマスターが行うことですが、多くのウェブマスターは、ウェブサイトの改訂...
分散ロックとは何ですか?分散ロックは、分散システム間の共有リソースへの同期アクセスを制御する方法です...
クラウド プラットフォームとオンプレミス サーバーは、現在、主流の IT イニシアチブの最前線にあり...
北京時間4月6日早朝、海外メディアtorrentfreakは「PUBGが競争相手を締め出すため著作権...