事务我们都不陌生,我们常说的事务一般都是指单机事务,即本地事务。那分布式事务是什么?分布式事务就是由多个本地事务组合而成的事务,一般在分布式场景下才会出现。
比如电商平台中,我们在购物的时候,下单支付这个过程看上去是一气呵成的,但是背后可能是多个系统的分工合作。订单系统、支付系统、物流系统等。这些系统部署在不同的服务器上,执行的都是各种的事务,对于电商平台来说,这就是分布式事务。
本地事务都好解决,有一套现成的事务机制,分布式事务比本地事务就要复杂多。如何实现分布式事务呢?大概有 3 种解决方式:
- 基于 XA 协议的二阶段提交协议。
- 三阶段提交协议。
- 基于 MQ 的最终一致性。
基于 XA 协议的二阶段提交
XA协议由 Tuxedo 首先提出的,并交给X/Open组织,作为资源管理器(数据库)与事务管理器的接口标准。目前,Oracle、Informix、DB2和Sybase等各大数据库厂家都提供对XA的支持。----来源百度百科
二阶段提交也叫 2PC ,The two-phase commit protocol。首先在二阶段提交中有两个角色:
- 参与者:本地资源管理器,即事务的执行者,也就是各个业务系统。
- 协调者:分布式事务的大脑,负责指挥协调各个业务