【问题标题】:Is 2-Phase commit safe or not两阶段提交是否安全
【发布时间】:2019-12-21 09:13:10
【问题描述】:

我发现很多读物都说 2PC 是安全的,这意味着它要么提交事务要么回滚。更具体地说,[如果有人提交,没有人会中止;如果一个人中止,没有人提交]。 (http://www0.cs.ucl.ac.uk/staff/B.Karp/gz03/f2010/gz03-lecture6-2PC.pdf)

来自Wikipedia,我知道在提交阶段,所有进程都会做以下事情:

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

我想知道在第 1 阶段,协调器是否在向多个参与者发送消息后失败,这意味着一些参与者会收到提交消息,而其他参与者不会。然后那些收到的人将提交,而其他人仍将被阻止。所以我觉得2PC在这里不能保证安全?

【问题讨论】:

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


    【解决方案1】:

    正如维基百科的文章所说:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2011-11-24
      • 2013-05-21
      • 2012-06-25
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多