XA规范
如果一个系统需要操作多个数据库,肯定都是跨多个数据库的,所以就产生了分布式事务的问题,为了解决这个问题,很早之前就定义了一整套规范来处理分布式事务的问题。其中X/open组织就定义了分布式事务的模型,对分布式事务定义了几个角色,AP(Application应用程序)、TM(Transaction Manager 事务管理器)、RM(Resource Manager资源管理器)、CRM(Communication Resource Manager 通信资源管理器)。上面的定义还是有点抽象,其实解释起来也简单。Application就表示我们的系统,TM嵌入系统的一个专门管理横跨多个数据库事务的一个组件、RM就是我们的数据库(比如:Oralce、Mysql)、CRM 可以表示消息中间件也可以不用。所以说XA仅仅是个规范,具体的实现是数据库厂商来提供的,比如Mysql就会提供XA规范的函数和类库实现。
2PC理论
X/Open组织定义的一套分布式事务的模型,是没有办法进行落地实践的。所以2PC就是基于XA规范写了一套分布式事理论,也可以叫一套规范。2PC也可以叫Two-Phase-Commitment-Protocol(两阶段提交)
(1)准备阶段