1

2-generals 問題と TCP 全体のコンテキストでは、次の状況で、次の通信手順を実行することに利点があるかどうか疑問に思っていました。

ATM が銀行と通信して、顧客の口座から 50 ドルを差し引く状況を考えてみましょう。状況は次のようになります。

状況 1:

ATM -- 銀行

50$を差し引く ->

<- 50$ 控除

その後、ATMはお金を解放します

状況 2:

ATM -- 銀行

50ドルを差し引きたい ->

<- わかりました。よろしければ、50 ドルを差し引くように依頼してください。

50$を差し引く ->

<- 50$ 控除

その後、ATMはお金を解放します

以下の場合、メリットはありますか?最初のコミュニケーションのステップがまったく不要であることを証明できますか? それとも、2 番目の状況で、すぐに使用できる利点がありますか?

前もって感謝します

4

1 に答える 1

0

ご存じのとおり、二将軍問題は解決不可能です。意見の相違が生じるような方法でメッセージをドロップする方法は常にあります。

あなたの例では、最初のステップは不要です。これは、トランザクションに関する交換からいずれかの当事者が引き出すという結論に決して影響を与えないためです。これは正式な証明ではなく、作成方法がわかりません。

とはいえ、実際の銀行システムでは、ATM が何をしたかを記録し、後で通信が途中で失敗した場合に備えてサーバーと同期します。二重引き出しが発生する可能性があります (これは現実の世界で発生しました - 銀行の開発者はこの問題を回避できないことを知っています) が、口座残高は後で修正されます。

于 2014-07-28T16:05:34.073 に答える