2016-02-28 32 views
0

什么时候可能2阶段提交块,以便它不再进步?什么时候可能2阶段提交没有进展?

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

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

有没有其他的情况?

回答

0

如果任何消息被延迟或丢失,或任何参与者随时崩溃(停止响应),则2阶段落实不起作用。

2PC可以有几种不同的方式失败。这里有一些我发现使用Molly

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