两阶段提交协议(Two Phase Commitment Protocol)
首先讲一下分布式事务的作用:为了保证各个事务、各个微服务之间的事务的数据一致性。
两阶段提交协议(Two Phase Commitment Protocol)中,涉及到两种角色
一个事务协调者(coordinator):负责协调多个参与者进行事务投票及提交(回滚)
多个事务参与者(participants):即本地事务执行者
总共处理步骤有两个
(1)投票阶段(voting phase):协调者将通知事务参与者准备提交或取消事务,然后进入表决过程。参与者将告知协调者自己的决策:同意(事务参与者本地事务执行成功,但未提交)或取消(本地事务执行故障);
(2)提交阶段(commit phase):收到参与者的通知后,协调者再向参与者发出通知,根据反馈情况决定各参与者是否要提交还是回滚;
2PC的优缺点
优点:事务参与者同时成功同时失败,保证了数据的强一致性
缺点:假如事务参与者之间的投票状态不一致,某些本地执行成功的参与者需要等待执行失败的参与者,长时间占用线程,效率低下。