三阶段提交
将二阶段提交的“提交事务请求”过程分为两步。
三阶段包括:CanCommit、PreCommit、doCommit
第一阶段:CanCommit
1、事务询问:协调者向各参与者发送包含事务那内容的CanCommit请求。询问是否可以执行事务提交操作。并等待响应。
2、询问响应:各参与者可以顺利执行任务,返回响应yes。并进入预备状态。否则响应no
第二阶段:PreCommit
根据各参与者的响应决定是否进行事务的PreCommit操作。包含两种情况:
事务预提交:参与者全部返回yes
1、 预提交请求:协调者向各参与者发送PreCommit请求,并进入Prepared阶段。
2、事务预提交:参与者接收到preCommit请求后,会执行事务操作。并将Undo和Redo信息记录到事务日志中。
3、反馈响应:反馈给协调者Ack响应。并等待最终指令。
中断事务:任意参与者返回no,或等待超时