0

銀行と ATM があるとします。それらはネットワークを介して通信しますが、失敗する可能性があります。それらの間の通信が 100% 持続するシナリオを作成することは可能ですか。この場合、次のことを意味します。

client withdrawn physical amount of money
<=>
account balance updated accordingly

いくつかのシナリオを確認してみましょう。

  • ATM はリクエストを送信し、銀行は確認を送信します。確認が失われ、銀行は口座を更新しましたが、クライアントはお金を受け取っていません。
  • (銀行が残高を更新するために ATM からの確認を待っている場合) ATM は要求を送信し、銀行は確認を送信し、ATM は受信の確認を送信します。アックは迷子になった。ATM はお金を発行しましたが、銀行は口座を更新しませんでした。

そのため、ネットワークに障害が発生しても、どちらの側でもお金が失われるのを防ぐことができないソリューションを作成することはできませんでした.

お知らせ下さい。

4

1 に答える 1

1

実際、私があなたの質問を誤解していなければ、おそらくLong Wait algorithm.

最初のステップでは、ATM が確認を受信しない (承認されない) まで待つことをお勧めします。この場合、これが唯一の実行可能な解決策です。nこの場合、確認応答が受信されない場合は、時間単位 (銀行からの確認応答を確認するための最小時間単位) の定期的な間隔ごとに、銀行に同じことを再度要求します。ATM)。繰り返し失敗する場合は、コード OR の概念に何か問題があることを意味します。

また、これらは銀行残高を保存および更新するための最良のオプションであるため、Redo Log Bufferの概念を利用してください!!! 口座情報は1部だけではなく、2~3部持って仮コピーや変更をonly update the final account info in redo log once the acknowledgement from the ATM is received to the bank or the vice-versa!REDO ログの値を更新する前に確認を受け取ることに注意してください。

于 2014-08-22T08:51:45.180 に答える