我有两个独立的系统。在某些时候,我希望能够进行影响两个系统的操作,并且我想模拟原子性,即使这在技术上是不可能的。为了说明这个问题,我们可以说我们想将一个对象从一个系统移动到另一个系统。
首先,因为每次操作都可能在任何时候失败,我会向两个系统添加一个指示意图的暂定记录。算法是:
缺乏原子操作虽然可能导致两个系统中的对象都没有,这取决于步骤4和5的顺序,以及它们之间的崩溃。
我的问题是,是否有一种算法可以某种方式解决缺乏原子性并允许我保证它。我有点看到它似乎不可能,但我希望不是。
答案 0 :(得分:0)
很可能(虽然不完美)。数据库一直这样做。有关简介,请参阅https://en.wikipedia.org/wiki/Distributed_transaction和https://en.wikipedia.org/wiki/Two-phase_commit_protocol。
当然,这是一个简洁的主题,所以我无法在代码中提供快速缩略图。但是,你可以这样做。
你的方法有一些优点。您需要的是两个系统之间的更多通信。