知识卡片

2PC的三个致命问题

普通读书笔记卡

内容

两阶段提交实践中很少直接用于业务系统一致性,原因有三:一是性能问题——阶段1锁资源后须等所有参与者返回;二是协调者单点风险——阶段1后协调者宕机会导致悬而不决;三是参与者响应不确定——超时未回ACK无法判断是否提交成功。共同根源是[[网络2将军问题的不可解性]]。发散:这解释了为何工程实践转向TCC、最终一致性等允许中间状态靠重试幂等收敛的方案。

参考来源

- 位置:第10章《事务一致性》10.2.1节「2PC」的三个问题(源文件:_epub-src/text/part0047.html) - 结论依据:原文明确列出2PC的三个问题:阶段1锁定资源后要等所有节点返回才能进入阶段2的性能问题;阶段2事务协调者宕机导致参与者悬而不决的单点风险;阶段2某参与者超时未回ACK导致无法判断提交状态的不确定性,直接支持卡片论述。 - 原始内容:"问题1:性能问题。在阶段1,锁定资源之后,要等所有节点返回……问题2:阶段1完成之后,如果在阶段2事务协调者宕机,则所有的参与者接收不到Commit或Rollback指令,将处于'悬而不决'状态。问题3……其中一个参与者超时或出错了……则其他参与者提交还是回滚呢?也不能确定。"