2pc两阶段的提交:
先确认 prepare获得确认,然后commit
优点:原理简单,实现方便
缺点:
- 同步阻塞:每个参与者要等待其他所有的参与者,限制性能
- 单点问题:如果协调者出现问题,尤其是在第二个阶段,会导致出去锁定事物资源的状态
- 数据不一致:如果再commit之后发生了网络异常会导致数据不一致
- 如果参与者故障,协调者只能通过自己的超时判断终端事物,任何一个节点都可能导致事物失败
3pc三阶段的提交:
深入理解分布式系统的2PC和3PC
存在的问题:
在doCommit阶段,如果参与者无法及时接收到来自协调者的doCommit或者rebort请求时,会在等待超时之后,会继续进行事务的提交。
所以,由于网络原因,协调者发送的abort响应没有及时被参与者接收到,那么参与者在等待超时之后执行了commit操作。这样就和其他接到abort命令并执行回滚的参与者之间存在数据不一致的情况。
网友评论