【发布时间】:2012-06-27 21:39:44
【问题描述】:
我了解三阶段提交是为了解决“两阶段提交”的问题,因为在第二阶段协调者和队列同时失败,无法知道协调者是否已决定提交消息.
显然三阶段提交旨在通过添加一个额外的阶段来解决这个问题。但是,如果协调者和队列失败,您在第三阶段不会面临完全相同的问题吗?
【问题讨论】:
-
为了后代,这里是维基百科定义 3 阶段提交的方式:en.wikipedia.org/wiki/Three-phase_commit_protocol
-
这篇文章的要点是:三阶段提交协议通过引入准备提交状态消除了这个问题。如果协调器在发送 preCommit 消息之前失败,则群组将一致同意该操作已中止。在所有群组成员确认他们准备提交之前,协调器不会发送 doCommit 消息。这消除了任何同类群组成员在所有同类群组成员都知道这样做的决定之前实际完成交易的可能性
-
我只是不明白添加额外的阶段将如何帮助解决问题
标签: distribution distributed distributed-transactions