暂无图片
分享
2023-01-21
三阶段提交的步骤?

三阶段提交的步骤?

收藏
分享
1条回答
默认
最新
大海

为了让原子提交协议在协调者故障下保持健壮并避免进入未决状态,三阶段提交(3PC)协议增加了一个额外的步骤,并且双方都具有超时机制,使得参与者在协调者发生故障时仍能继续提交或中止(取决于系统状态)。3PC假定同步网络模型,且不存在通信故障。

3PC在提交/中止步骤之前添加了一个准备阶段,该阶段中协调者告知参与者在提议阶段收集的投票信息,即使协调者发生故障,协议也可以继续执行。3PC的所有其他性质都和2PC类似,包括要求有一个协调者。3PC的另一个有用的补充是参与者侧的超时,参与者根据进程当前正在执行的步骤,超时之时将强制进行提交或中止。

三阶段提交包含以下三个步骤:

提议(propose)阶段:协调者发出提议值并收集投票。

准备(prepare)阶段:协调者将投票结果通知参与者。如果投票通过并且所有参与者都决定要提交,则协调者会发送一条prepare消息,指示它们准备提交。否则,将发送Abort消息并退出流程。

提交(commit)阶段:协调者通知参与者提交事务。

在提议这一步中,类似于2PC,协调者分发提议值并收集参与者的投票。如果协调者在此阶段崩溃导致操作超时,或者其中一个参与者投反对票,则事务中止。

收集投票后,协调者做出决定继续进行事务,则发出Prepare指令。协调者可能无法将Prepare消息发送给所有参与者,或是可能没有收到参与者的确认。这种情况下,参与者可能会在超时后中止事务,因为算法尚未完全进入到已准备状态。

一旦所有参与者成功进入已准备状态并且协调者收到了它们的准备确认,无论其中任何一方发生故障,事务都将被提交。之所以可以这样做是因为此阶段中所有参与者看到的状态是相同的。

在提交阶段,协调者将准备阶段的结果传达给所有参与者,重置它们的超时计数器并完成事务。

暂无图片 评论
暂无图片 有用 2
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏