2015-10-02 11 views
8

最近、私は2フェーズコミットが悪いことを何度も読んできましたが、常にサイドノートとして読んでいます。だからそれには良い説明はありませんでした。 CQRS Journey Chapter 5で例えば2フェーズコミットの原因は何ですか?

第二に、我々は長期的には、彼らは常に 問題を引き起こすので、二相コミットを回避しようとしています。ページ563の

またはImplementing Domain-Driven Design中:

秒ReadRecorts()

...、2フェーズ・コミットを必要とせずにそれらを公開するために、 イベントを複製するために、インフラストラクチャで使用されています

複数のデータベースサーバー間の一貫性を保証するために、2フェーズコミットが実装されていると考えました。

2フェーズコミットを使用すると何が問題になりますか?なぜそれらを避ける方が良いですか?

+1

http://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdfを参照してください。 – Matt

答えて

8

最大の問題は、2フェーズコミットプロトコルのブロック性質によるスケーラビリティです。

2PCでは、参加者間の綿密な調整が必要です。特に、各パーティは準備フェーズとコミットを確認する必要があります。パーティーがコミットする準備ができていることを確認したら、トランザクションコーディネーターがコミットまたはロールバックメッセージを送信するまでブロックする必要があります。いずれかの当事者がネットワークを介している場合、ネットワーク待ち時間はノード間の通信のボトルネックとなる。

また、パーティーがコミットする準備ができていることを確認した後は、実際にトランザクションをコミットする必要があります。これには、(トランザクションが後でロールバックされた場合でも)永続性ストレージへのチェックポイントが必要で、スループットが制限される可能性もあります。

関連する問題