1

在 2-generals 问题和整个 TCP 的背景下,我一直在想,在以下情况下,执行以下通信步骤是否会有任何优势。

考虑 ATM 与其银行通信以从客户账户中扣除 50 美元的情况,情况如下:

情况一:

自动柜员机——银行

扣除 50 美元 ->

<- 扣除 50 美元

ATM然后会释放钱

情况2:

自动柜员机——银行

我要扣除 50 美元 ->

<- 好的,如果你愿意,你可以要求我扣除 50 美元

扣除 50 美元 ->

<- 扣除 50 美元

ATM然后会释放钱

以下情况有什么优势吗?是否可以证明第一个沟通步骤完全没有必要?或者在第二种情况下是否有一些(可能是开箱即用的)优势?

提前致谢

4

1 回答 1

0

您可能知道,两将问题是无法解决的。总有一种方法可以以产生分歧的方式丢弃消息。

在您的示例中,第一步是不必要的,因为它永远不会影响任何一方将从交易中得出的关于交易的结论。这不是正式的证明,我不知道如何制作。

也就是说,在真实的银行系统中,ATM 会记录它所做的事情,然后它会与服务器同步,以防通信中途失败。双重提款是可能的(这在现实世界中已经发生过 - 银行开发人员知道他们无法避免这个问题)但账户余额将在稍后修复。

于 2014-07-28T16:05:34.073 回答