インタビュアー: 2 フェーズ コミットと 3 フェーズ コミットの違いは何ですか?

インタビュアー: 2 フェーズ コミットと 3 フェーズ コミットの違いは何ですか?

分散トランザクションでは、分散トランザクションの正常な動作を確保するために、通常、2 フェーズ プロトコルまたは 3 フェーズ プロトコルが使用されます。これは、X/Open によって定義された分散トランザクション標準のセットでもあります。

X/Open は、もともと UNIX 環境の標準を提供するために設立された、複数の国際的なコンピュータ製造業者の連合体です。

分散トランザクションとは、分散システム内の複数のノード間で実行されるトランザクション操作を指します。たとえば、分散システムでは、ユーザーが注文を行うときに、注文情報を作成し、同時に在庫を減らす必要があります。ただし、次の図に示すように、注文情報の作成と在庫の削減は、異なるサーバーおよび異なるデータベースに分散されます。

写真

この時点で、すべての操作が一緒にコミットされるか、一緒にロールバックされるように、分散トランザクションが介入する必要があります。

1. 2フェーズコミット

2 フェーズ コミット (2PC) は、トランザクションをコミットまたはロールバックするときにすべての参加者が一貫した状態であることを保証する分散トランザクション プロトコルです。 2PC プロトコルは次の 2 つのフェーズで構成されます。

  1. 準備フェーズ: このフェーズでは、トランザクション コーディネーターはすべてのトランザクション参加者に準備要求を送信し、トランザクションをコミットする準備ができているかどうかを尋ねます。参加者は必要なすべてのアクションを実行し、トランザクションをコミットする準備ができているかどうかをコーディネータに応答します。すべての参加者がトランザクションをコミットする準備ができていると応答した場合、コーディネーターは次のフェーズに進みます。いずれかの参加者がトランザクションをコミットする準備ができていない場合、コーディネーターはすべての参加者にトランザクションをロールバックするように通知します。
  2. コミット フェーズ: このフェーズでは、すべての参加者がトランザクションをコミットする準備ができている場合、コーディネーターはすべての参加者にコミット要求を送信します。アクターは必要なすべてのアクションを実行し、その結果を永続的なストレージに記録します。すべての参加者がトランザクションをコミットすると、コーディネーターは確認リクエストを送信します。いずれかの参加者がトランザクションのコミットに失敗した場合、コーディネーターはすべての参加者にトランザクションをロールバックするように通知します。

2PC プロトコルは分散トランザクションの原子性と一貫性を保証できますが、効率が低く、ブロッキングなどの問題が発生する可能性があります。したがって、実際のアプリケーションでは、代わりに 3PC (3 フェーズ コミット) や Paxos プロトコルなどの他の分散トランザクション プロトコルを使用できます。

2相コミットの問題

2 フェーズ コミットにはいくつかの問題があります。

  1. 同期ブロッキング問題: 実行プロセス中、参加しているすべてのノードはトランザクション ブロッキング タイプです。参加者がパブリック リソースを占有する場合、他のサードパーティ ノードがパブリック リソースにアクセスできないようにブロックする必要があります。つまり、投票段階から提出段階の完了まで、リソースはロックされます。
  2. 単一障害点: コーディネーターの重要性により、コーディネーターに障害が発生すると、参加者はブロックを継続します。特に第 2 フェーズでは、コーディネーターが失敗すると、すべての参加者がトランザクション リソースをロックした状態のままになり、トランザクション操作を完了し続けることができません。
  3. データ不整合の問題: 2PC の最終コミット フェーズで、コーディネータが参加者にコミット要求を送信した後、ローカル ネットワークの異常が発生するか、コミット要求の送信プロセス中にコーディネータが失敗し、その結果、一部の参加者のみがコミット要求を受信することになります。コミット要求を受信すると、これらの参加者はコミット操作を実行します。ただし、コミット要求を受信して​​いない他のマシンはトランザクションのコミットを実行できないため、分散システム全体でデータの不整合が発生します。

2. 3相コミット

3 フェーズ コミット (3PC) は、2PC プロトコルで発生する可能性のあるブロッキング問題を解決するために、2PC プロトコルに追加のフェーズを追加します。 3PC プロトコルは 3 つのフェーズで構成されます。

  1. CanCommit フェーズ (照会フェーズ): このフェーズでは、トランザクション コーディネーターがすべてのトランザクション参加者に CanCommit 要求を送信し、トランザクションをコミットする準備ができているかどうかを尋ねます。参加者は必要なすべてのアクションを実行し、トランザクションをコミットできるかどうかをコーディネーターに返信します。
  2. PreCommit フェーズ (準備フェーズ): すべての参加者がトランザクションを送信できると応答した場合、コーディネーターはすべての参加者に PreCommit 要求を送信し、トランザクションを送信する準備ができていることを通知します。参加者は必要なすべてのアクションを実行し、トランザクションをコミットする準備ができているかどうかをコーディネーターに応答します。
  3. DoCommit フェーズ (コミット フェーズ): すべての参加者がトランザクションをコミットする準備が整っている場合、コーディネーターはすべての参加者に DoCommit 要求を送信して、トランザクションをコミットするように通知します。アクターは必要なすべてのアクションを実行し、その結果を永続的なストレージに記録します。すべての参加者がトランザクションをコミットすると、コーディネーターは確認リクエストを送信します。いずれかの参加者がトランザクションのコミットに失敗した場合、コーディネーターはすべての参加者にトランザクションをロールバックするように通知します。

2PC プロトコルと比較して、3PC プロトコルではプロトコルに CanCommit フェーズ (照会フェーズ) が追加され、参加者は CanCommit フェーズ中にブロックを引き起こす可能性のある問題を発見して解決できるようになります。このようにして、3PC プロトコルはコミットまたはロールバック トランザクションをより高速に実行し、不要な待機時間を削減できます。 2PC プロトコルと比較すると、3PC プロトコルには依然としてブロッキングの問題がある可能性があることに注意してください。

3. 2フェーズコミットと3フェーズコミット

2PC と 3PC は、分散トランザクションでよく使用される 2 つのプロトコルです。 3PC は 2PC プロトコルの改良版と見ることができます。 2PC と比較して、次の 2 つの改善点があります。

  1. コーディネータと参加者の両方にタイムアウト メカニズムが導入されます (2PC では、コーディネータにのみタイムアウト メカニズムがあります)。
  2. 2PC と比較して、3PC では CanCommit ステージが追加され、問題をできるだけ早く検出できるため、後続のブロックや無効な操作を回避できます。

つまり、2PC と比較すると、3PC ではタイムアウト メカニズムが導入されているため、ブロックされる可能性が低くなります。同時に、3PC は 2PC の準備フェーズを 2 つのステップに分割し、バッファ フェーズを追加して、最終送信フェーズの前に各参加ノードのステータスが一貫していることを保証します。

4. データの一貫性の問題と解決策

3PC は同期ブロックの問題と単一点障害の問題を軽減できますが、データの一貫性の問題は依然として残ります (確率は非常に小さい)。データの一貫性の問題には、Paxos アルゴリズムや柔軟なトランザクション メカニズムなど、さまざまな解決策があります。

4.1 パクソスアルゴリズム

Paxos アルゴリズムは、メッセージ パッシングに基づく分散コンセンサス アルゴリズムであり、2013 年にチューリング賞を受賞しました。ACM AM チューリング賞は、コンピューター サイエンスの分野で最も名誉ある賞の 1 つです。この賞は、1966 年に米国計算機協会 (ACM) によって設立され、コンピュータ サイエンスの分野に顕著な貢献をした個人またはグループを表彰するために毎年授与されています。簡単に言えば、Paxos アルゴリズムは、分散システムでデータの一貫性とコンセンサスを実現し、分散システム内の異なるノード間のデータの同期と一貫性を確保するために使用される分散コンセンサス アルゴリズムです。 Paxos アルゴリズムは、提案者、受容者、学習者の 3 つの役割で構成されます。ノードが提案を開始する必要がある場合、そのノードは他のノードに提案を送信します。受信者は提案を受け取り、処理します。提案を拒否することも、受け入れることもできます。十分な数のノードが提案を受け入れた場合、提案は確定され、すべての学習者に通知され、最終的にすべてのノードが合意に達します。 Paxos アルゴリズムは単純に見えますが、実際には非常に複雑です。次のような Paxos アルゴリズムを使用する製品も多数あります。

  • Redis: Redis は、Paxos アルゴリズムを使用して分散ロック サービスとマスター/スレーブ レプリケーションを実装するインメモリ データベースです。
  • MySQL: MySQL 5.7 で導入された MySQL グループ レプリケーションは、従来のマスター スレーブ レプリケーションに代わるものです。
  • ZooKeeper: ZooKeeper は、Paxos アルゴリズムを使用して分散ロック サービスとデータの一貫性を実装する分散調整サービスです。
  • Apache Cassandra: Cassandra は、Paxos アルゴリズムを使用してデータの一貫性とレプリケーションを実装する分散データベース システムです。
  • Google Chubby: Chubby は、Google 社内で使用されている分散ロック サービスです。 Paxos アルゴリズムを使用して、分散ロック サービスやネーミング サービスなどの機能を実装します。

4.2 柔軟なトランザクション

柔軟なトランザクション メカニズム: 一定期間内に異なるノード上のデータの不整合を許可するが、最終的な一貫性を要求するメカニズム。柔軟なトランザクションには、TCC 補償トランザクション、信頼性の高いメッセージ トランザクション (MQ トランザクション) などが含まれます。

まとめ

分散トランザクションでは、分散トランザクションの正常な実行を保証するために、通常、2 フェーズまたは 3 フェーズのコミット プロトコルが使用されます。 2 フェーズ プロトコルには準備フェーズとコミット フェーズが含まれますが、同期のブロック、単一点障害、データの一貫性などの問題があります。 3 フェーズ プロトコルは、2 フェーズ プロトコルの改良版と見ることができます。 2 つのフェーズのうち準備フェーズを 2 つに分割し、送信フェーズの前に各参加ノードのステータスが一貫していることを確認するための照会フェーズを追加します。同時に、同期ブロッキング問題の発生確率を低減するためのタイムアウト メカニズムも導入されています。ただし、2PC と 3PC の両方にデータの一貫性の問題があります。現時点では、Paxos アルゴリズムや柔軟なトランザクション メカニズムなどのソリューションを使用して、トランザクションの一貫性の問題を解決できます。

参考文献と謝辞

https://pdai.tech/md/arch/arch-z-transection.html

<<:  K8s のアップグレードにより Didi が 12 時間停止したのですか?

>>:  コスト削減と笑顔の増加:滴滴P0レベルの失敗

推薦する

草柳コミュニティの視点からフォーラムの現状と将来を垣間見る

【要点】WeiboやSNSの台頭と成長に伴い、かつて人気があったフォーラムは衰退し始めました。従来の...

.com ドメイン名を 2.98 ドルで登録し、8.98 ドルで更新し、60 日後に何の支障もなく移管できます。

多くの人が長い間、安価な .com ドメイン名を取得していないと推定されます。現在、国際的に有名なド...

技術を培い、「3つの良い」評判を獲得 - インスパー雲海の2020年レポートカード

2020年、特別な年。 2020 年を一文でまとめるとしたら、どのように表現しますか?嵐が来る前に、...

K8s の使用に問題がありますか? Istio がお手伝いします!

コンテナ、特に Kubernetes を扱っている場合は、おそらく Istio について聞いたことが...

AWS、Azure、Google のクラウド コンテナ レジストリの比較

3 つの主要なパブリック クラウド プラットフォームである Amazon Web Services ...

ウェブサイトの高速化に役立つ口コミマーケティングを構築する方法

新製品のウェブサイトが立ち上げられるたびに、ウェブマスターとして口コミマーケティング手法を確立するこ...

盛業:人間本位を堅持し、産業技術の配置を加速する

疫病の影響、貿易環境の変化、戦争紛争の影響…全体的な経済低迷とマクロ経済環境への高圧力の状況下で、す...

ガートナーのクラウドAI開発サービスに関するマジック・クアドラントレポートが正式に発表され、テンセントが2年連続で選出

本日、国際的に権威のある調査機関であるガートナーによる2021年版「クラウドAI開発サービス分野のマ...

王小川氏は百度の91買収について「ワイヤレス検索は大きな落とし穴だ」とコメントした。

新浪科技は7月19日早朝、百度が91無線を19億ドルで買収したことを受けて、捜狗のCEOである王小川...

落下防止携帯電話に関するアップルの新特許:画面が自動的に保護シートを拡張

appleinsiderによると、米国特許商標庁は「電子機器のアクティブスクリーン保護」メカニズムと...

クラウドコンピューティングのコンプライアンス問題に関する誤解と現実を合理的に考察

ハッカーが米国の3大信用機関の1つであるEquifaxのシステムを攻撃し、1億4,300万人の個人デ...

外部リンクの本質:本性を明かさないようにする

SEO を行っている友人の多くは、外部リンクの重要性を知っていると思います。いわゆる SEO の教科...

2019年中国企業サービス産業ユニコーンリストが発表され、栄聯が「ハードユニコーン」の称号を獲得

最近、2019年産業インターネットユニコーンサミットで「2019年産業インターネット業界ユニコーンリ...

標準インターネット:ロサンゼルス50G高セキュリティVPS、最低209元/年、Windows付き

スタンダードインターコネクトは、米国西海岸のロサンゼルスデータセンターに50Gの高防御VPSを立ち上...