【问题标题】:When might 2 phase commit not make progress?2阶段提交何时可能没有进展?
【发布时间】:2016-02-28 16:53:18
【问题描述】:

什么时候可以阻止 2 阶段提交以使其不再取得进展?

在这里担任协调员和 4 名参与者。

假设参与者 P2 在发送“vote-commit”消息(即该消息被协调器成功接收)后立即崩溃并且没有进一步失败,那么协调器等待来自 P2 的“Ack”并不断发送“Global -commit” 超时后。协调器被阻塞;其他参与者未被阻止。

还有其他情况吗?

【问题讨论】:

    标签: distributed-system


    【解决方案1】:

    如果任何消息延迟或丢弃,或者任何参与者在任何时候崩溃(停止响应),2 阶段提交将不起作用。

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-28
      • 2012-07-20
      • 2012-01-20
      • 2021-10-08
      • 2013-12-07
      • 1970-01-01
      • 2011-11-15
      • 2012-06-27
      相关资源
      最近更新 更多