什么时候2阶段提交没有进展?

时间:2016-02-28 16:53:19

标签: distributed-system

什么时候2阶段提交阻止以便它不再进展?

假设协调员和4名参与者在这里。

假设参与者P2在发送“投票提交”消息后立即崩溃(即协调员成功收到此消息)并且没有其他故障,则协调员等待来自P2的“确认”并继续发送“全局” - 在超时后提交给它。协调员被阻止;其他参与者没有被阻止。

还有其他案例吗?

1 个答案:

答案 0 :(得分:0)

如果任何消息被延迟或丢失,或者任何参与者在任何时候崩溃(停止响应),则

2阶段提交不起作用。

2PC可能会失败的方式有几种。以下是我使用Molly找到的一些内容。

  • 发送vote-commit邮件后,协调员可能会崩溃,但在发送global-commit / global-abort之前。这意味着投票提交的所有客户端都在等待协调员的响应。
  • 网络可能会延迟或丢弃global-commit条消息,导致这些消息的收件人被阻止,等待他们可能永远不会收到的消息。
  • 网络可能会延迟或放弃投票以提交或中止,从而导致协调器阻塞,等待它可能永远不会收到的消息。
  • 网络可能会延迟或丢弃查询,即协调员发送给其他参与者的消息,询问他们是否准备提交。然后协调员将阻止,等待这些参与者的回复。