2020-03-05 分布式事务
一、说明
1、单机版数据库事务,是对一个数据库进行事务处理。
2、分布式事务,就是多个数据库要进行事务处理,要么全部成功,要么全部失败。
比如现在是微服务结构,系统有“库存服务”、“订单服务”,分别操作各自的数据库,
如果现在库存服务数据库操作失败了,数据回滚,数据库数据没有改变,那么订单服务数据库也必须数据回滚,不能改动数据库。
二、解决方案
1、XA两阶段提交
XA协议中包含两角色:事务协调者 和 事务参与者
第一阶段:

在XA分布式事务的第一阶段,作为事务协调者的节点会首先向所有的参与者节点发送Prepare请求。
在接到Prepare请求之后,每一个参与者节点会各自执行与事务有关的数据更新,写入Undo Log和Redo Log。如果参与者执行成功,暂时不提交事务,而是向事务协调节点返回“完成”消息。
当事务协调者接到了所有参与者的返回消息,整个分布式事务将会进入第二阶段。
第二阶段:

在XA分布式事务的第二阶段,如果事务协调节点在之前所收到都是正向返回,那么它将会向所有事务参与者发出Commit请求。
接到Commit请求之后,事务参与者节点会各自进行本地的事务提交,并释放锁资源。当本地事务完成提交后,将会向事务协调者返回“完成”消息。
当事务协调者接收到所有事务参与者的“完成”反馈,整个分布式事务完成。
具体说明:

学习资料:

浙公网安备 33010602011771号