我发现许多读物说 2PC 是安全的,这意味着它要么提交事务,要么回滚。更具体地说,[如果有人提交,没有人会中止;如果一个人中止,没有人提交]。(http://www0.cs.ucl.ac.uk/staff/B.Karp/gz03/f2010/gz03-lecture6-2PC.pdf)
从Wikipedia,我知道在提交阶段,所有进程都会做以下事情:
- 协调者向所有参与者发送提交消息。
- 每个参与者完成操作并释放事务期间持有的所有锁和资源。
- 每个参与者向协调器发送一个确认。
- 协调器在收到所有确认后完成事务。
我想知道在第 1 阶段,协调器是否在向多个参与者发送消息后失败,这意味着一些参与者会收到提交消息,而其他参与者不会。然后那些收到的人将提交,而其他人仍将被阻止。所以我认为2PC在这里不能保证安全?