是否可以通过机器边界(通过tcp-ip)进行交易?

时间:2009-12-01 11:59:23

标签: transactions networking theory tcp

理论上,可以定义一个协议,其中一台机器在另一台机器(或多台机器)上进行一些远程调用,并且在该过程的任何部分中,如果任何机器(或操作)发生故障,或者通信滴,一切都回滚? (就像数据库一样)

我问这个问题,因为在硬件层面上,人们总是说如果没有原子处理器操作(测试和设置),就无法进行原子操作(事务的一个非常重要的组成部分)。

但是从现在开始我们谈论的是多台机器,但这并没有实现。

作为一个例子,这将是多么棘手:假设我有一个协议在远程机器上发出命令,并得到一个回复​​。可能是该方法被调用,但在响应传输期间,连接终止。那么执行操作的机器也可以认为一切正常,但接收机器从未得到答案。

添加Ack并没有帮助,因为ack也可能在传输过程中丢失。

有兴趣阅读别人的想法(并了解到27年前某位教授已经提出了坚如磐石的解决方案)。

[R

2 个答案:

答案 0 :(得分:3)

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

您正在寻找的是Two-Phase Commit protocol

  

在事务处理中,数据库,   和计算机联网,两阶段   commit protocol(2PC)是一种类型   原子承诺协议。它是一个   分布式算法协调   所有参与的过程   分布式原子事务   是否提交或中止(回滚)   交易。该协议实现了   它的目标甚至在许多系统的情况下   失败(涉及任何一个过程,   网络节点,通信等   失败),因而广泛   使用。

答案 1 :(得分:1)

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

阅读Distributed Computing: Principles, Algorithms, and Systems并再次提出问题;)