2PC
1、提交事务请求
事务询问、执行事务(Undo Redo)、反馈响应
2、执行事务请求
发起请求、事务操作(提交 回滚)、反馈结果、完成
同步阻塞:执行事务提交,各个参与者等待其他参与者响应,无法进行其他任何操作
单点问题:协调者出现问题
数据不一致:协调者执行事务请求发送消息,commit部分接收
太过保守:协调者提交事务请求,参与者出现故障,依赖超时
二阶段提交,容错机制不完善,任何节点失败,事务失败
3PC
1、CanCommit
事务询问、反馈结果
2、PreCommit
发送预提交请求、事务预提交、反馈事务执行响应
发送中断请求、中断事务(超时)
3、DoCommit
发送提交请求、事务提交、反馈事务提交结果、完成事务
发送中断请求、事务回滚、反馈事务回滚结果、中断事务
一旦进入阶段三,参与者等待超时,继续提交事务
三阶段降低参与者阻塞范围,单点故障时达成一致;但是,接收到preCommit后,后续网络问题,参与者会提交事务,出现不一致