1、引言
💡 事务是指程序在做一件事情的时候,要么成功完成,要么完不成。把满足ACID特征事务的称为刚性事务,即具有非常强的一致性要求。随着分布式系统的不断普及,分布式事务方案不断涌现出来,本文将学习总结下当前比较流行的分布式事务框架,目的是学习前人解决问题的思路,以备实际开发中可以借鉴。
2、2PC方案
考虑这样一个需求:用户A想要去某地旅行,为了避免繁琐的购票环节,通过一家旅行社安排行程。旅行社要做的事情为:订一张火车票和目的地的酒店,如果订购火车票失败,就不会定酒店,行程自然失败;同样的如果火车票订购成功但是酒店订购失败,行程也将失败。即订购火车票和订酒店这两个动作只要有一个失败,行程都将失败,如图1所示。
图1 旅行社订票示意图
上述的过程其实就是一个分布式事务解决方案:2PC(Two-Phase Commit,两阶段提交)。2PC中引入了参与者(Participant)与协调者(Coordinator)的概念。参与者是指参与执行具体功能业务的服务节点,上述例子中,订票的12306和订酒店的携程就是这次活动中的参与者。协调者是指接收服务请求后向将对应服务指派