我发现许多读数表明2PC是安全的,这意味着它将提交事务或回滚。更具体地说,[如果一个人犯了,没有人会中止;如果中止,则无人提交]。 (http://www0.cs.ucl.ac.uk/staff/B.Karp/gz03/f2010/gz03-lecture6-2PC.pdf)
从Wikipedia开始,我知道在提交阶段,所有进程都将执行以下操作:
我想知道协调器是否在向多个参与者发送消息后是否失败了,这意味着某些参与者将收到提交消息,而其他参与者则不会。这样,那些收到的人就会承诺,而其他人仍然会被阻止。所以我认为2PC在这里不能确保安全吗?
答案 0 :(得分:2)
如Wikipedia上的文章所述:
如果协调器永久失败,则某些参与者将永远无法解决他们的事务:参与者将协议消息发送给协调器后,它将阻塞直到收到提交或回滚为止。
这里的关键词是“永久地”。在您的第一个链接中,还将2PC算法标记为安全,仅适用于控制器重启而不是永久失效。
因此2PC在其组件可以交互的情况下是安全的(即使有重启,连接丢失和其他临时问题)。