あなたのシステムには2つのアクションが必要です(OP:あなたのvirt。ソフトウェアでの操作; WDB:データベースへの書き込み)。分散トランザクションの種類ですが、仮想化されたソフトウェアはトランザクション可能な動作(ロールバックなし)を直接サポートしません。分散トランザクションシステムの一部にすることができれば、完了します(eg参照)が、これは不可能でも実用的でもないことがよくあります。疑似トランザクションの動作を達成するためのさまざまな戦略は、シナリオの詳細によって異なります。いくつかの例:
- オープンTX(DB内のトランザクション)
- WDB
- OP
- OPが成功した場合は、TXをコミットし、他のロールバックTX。
DBに書き込むものがOPの操作に依存しない(不可能な)場合にのみ実行可能です。
- OP1(操作の第一段階:あなたは結果を得るが、何も変更しない)
- オープンTX
- WDB
- OP2(第2段階:あなたはのvirtを変更します。 sofware)
- TXをコミットまたはロールバック
(ステップ4-5これはPOだろう)切り替えることができますまたは "2フェーズコミット"の実装の人。これらの2つの段階で作業を分けることができる場合にのみ実行可能です。
- オープンTX
- ダミーWDB(DBダミー結果を書き込む)
- ロールバックTX
- OP
- WDB
これはDBが動作していることを確認実際の操作と書き込みを試みる前に、ダミーの書き込みを行います。実行可能ですが、絶対確実ではありません。
- OP
- WDB
- 失敗した場合:、生データをファイルに保存し、エラーをログに記録し、ITにメールを送って、上の赤いライトをオンにします。
音が哀れです...しかし時にはそれは唯一の実行可能な方法です。
素敵な答え..私は最後に2番目を選びます。 – adityap