理论上,可以定义一个协议,其中一台机器做另一台机器(或多于一个)上的一些远程调用,并且其中在该方法的任何部分,如果任何一台机器(或操作)的失败,或通信滴,一切都被回滚? (就像数据库可以)

我问这个,因为在硬件层面,人们总是说,一个人不能没有一个原子处理器的操作使原子操作(交易的一个非常重要的成分)(测试和设置)。

但由于现在我们谈论的多台机器,这个不飞。

作为一个实例如何做到这一点是棘手:说我有一个协议来在远程计算机上发出一个命令,并得到回一个响应。这可能是因为该方法被调用,但响应的运输过程中,连接死亡。它可能然后也很好是其执行操作的机器认为一切正常,但是接收机器从来没有得到答案。

添加确认的没有帮助,因为还有ACK的可能在运输过程中丢失。

有兴趣阅读他人的想法(并学习一些教授27年前已经想出了一个石头大概固溶体)。

[R

有帮助吗?

解决方案

是,这个问题已经(或多或少)已经解决了:)

什么你要找的是二阶段提交

  

在事务处理,数据库,   与电脑联网,两相   提交协议(2PC)是一种类型的   原子提交协议。它是一个   分布式算法协调   所有参与这个过程,   分布式原子事务上   是否提交或中止(回滚)   交易。该协议实现   它甚至在系统中的许多情况下,目标   失败(涉及任一过程,   网络节点,通信等   故障),并且因此广泛   使用。

其他提示

听起来像分布的标准问题。

读取分布式计算:原理,算法和系统并再次提出这样的问题;)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top