【发布时间】:2016-02-28 16:53:18
【问题描述】:
什么时候可以阻止 2 阶段提交以使其不再取得进展?
在这里担任协调员和 4 名参与者。
假设参与者 P2 在发送“vote-commit”消息(即该消息被协调器成功接收)后立即崩溃并且没有进一步失败,那么协调器等待来自 P2 的“Ack”并不断发送“Global -commit” 超时后。协调器被阻塞;其他参与者未被阻止。
还有其他情况吗?
【问题讨论】:
什么时候可以阻止 2 阶段提交以使其不再取得进展?
在这里担任协调员和 4 名参与者。
假设参与者 P2 在发送“vote-commit”消息(即该消息被协调器成功接收)后立即崩溃并且没有进一步失败,那么协调器等待来自 P2 的“Ack”并不断发送“Global -commit” 超时后。协调器被阻塞;其他参与者未被阻止。
还有其他情况吗?
【问题讨论】:
如果任何消息延迟或丢弃,或者任何参与者在任何时候崩溃(停止响应),2 阶段提交将不起作用。
2PC 失败的方式有多种。以下是我使用Molly 找到的一些内容。
vote-commit 消息之后,但在发送global-commit/global-abort 之前,协调器可能会崩溃。这意味着所有投票提交的客户端都在等待协调器的响应。global-commit 消息,导致这些消息的收件人阻塞,等待他们可能永远不会收到的消息。 【讨论】: