思考:

为什么不直接在二阶段提交(2PC)的基础上增加默认提交的操作,而是引入三阶段提交(3PC)的预备阶段?

二阶段提交(2PC)的局限性:

2PC中,协调者必须收到所有参与者的明确“成功”消息后,才会通知提交;否则默认不提交,以保证数据一致性。

如果某个参与者因网络或故障未回复,协调者会默认中止事务,导致资源长时间锁定和系统阻塞。

为什么不能直接增加默认提交:

如果直接增加默认提交,可能会导致部分参与者提交成功,而异常参与者回滚,造成数据不一致。

2PC的目标是强一致性,默认提交会破坏这一目标。

三阶段提交(3PC)的作用:

3PC通过增加预备阶段(PreCommit),让参与者先进行自检,确保自己能成功执行后续操作。

预备阶段的作用是降低失败概率,确保在超时或网络异常时,参与者可以基于预备阶段的结果自行决定提交或回滚,减少阻塞时间。

3PC并没有根本解决2PC的问题,但通过预备阶段优化了系统的可用性和健壮性。

Logo

更多推荐