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