两阶段提交是否安全

时间:2019-12-21 09:13:10

标签: distributed-system consensus two-phase-commit

我发现许多读数表明2PC是安全的,这意味着它将提交事务或回滚。更具体地说,[如果一个人犯了,没有人会中止;如果中止,则无人提交]。 (http://www0.cs.ucl.ac.uk/staff/B.Karp/gz03/f2010/gz03-lecture6-2PC.pdf

Wikipedia开始,我知道在提交阶段,所有进程都将执行以下操作:

  1. 协调员将提交消息发送给所有参与者。
  2. 每个参与者完成操作并释放交易期间持有的所有锁和资源。
  3. 每个参与者都向协调员发送确认。
  4. 协调员在收到所有确认后完成交易。

我想知道协调器是否在向多个参与者发送消息后是否失败了,这意味着某些参与者将收到提交消息,而其他参与者则不会。这样,那些收到的人就会承诺,而其他人仍然会被阻止。所以我认为2PC在这里不能确保安全吗?

1 个答案:

答案 0 :(得分:2)

如Wikipedia上的文章所述:

  

如果协调器永久失败,则某些参与者将永远无法解决他们的事务:参与者将协议消息发送给协调器后,它将阻塞直到收到提交或回滚为止。

这里的关键词是“永久地”。在您的第一个链接中,还将2PC算法标记为安全,仅适用于控制器重启而不是永久失效。

因此2PC在其组件可以交互的情况下是安全的(即使有重启,连接丢失和其他临时问题)。