2020-03-05 分布式事务

 

一、说明

1、单机版数据库事务,是对一个数据库进行事务处理。

 

2、分布式事务,就是多个数据库要进行事务处理,要么全部成功,要么全部失败。

比如现在是微服务结构,系统有“库存服务”、“订单服务”,分别操作各自的数据库,

如果现在库存服务数据库操作失败了,数据回滚,数据库数据没有改变,那么订单服务数据库也必须数据回滚,不能改动数据库。

 

二、解决方案

1、XA两阶段提交

XA协议中包含两角色:事务协调者 和 事务参与者

第一阶段:

 

在XA分布式事务的第一阶段,作为事务协调者的节点会首先向所有的参与者节点发送Prepare请求。

在接到Prepare请求之后,每一个参与者节点会各自执行与事务有关的数据更新,写入Undo Log和Redo Log。如果参与者执行成功,暂时不提交事务,而是向事务协调节点返回“完成”消息。

当事务协调者接到了所有参与者的返回消息,整个分布式事务将会进入第二阶段。

第二阶段:

 

 

在XA分布式事务的第二阶段,如果事务协调节点在之前所收到都是正向返回,那么它将会向所有事务参与者发出Commit请求。

接到Commit请求之后,事务参与者节点会各自进行本地的事务提交,并释放锁资源。当本地事务完成提交后,将会向事务协调者返回“完成”消息。

当事务协调者接收到所有事务参与者的“完成”反馈,整个分布式事务完成。

具体说明:

 

 

 

 

 

学习资料:

1、https://blog.csdn.net/bjweimengshu/article/details/79607522?depth_1-utm_source=distribute.pc_relevant.none-task

2、https://blog.roncoo.com/article/127500

3、多种解决方案详情:https://www.toutiao.com/a6717432946736759299/?app=news_article_lite&is_hit_share_recommend=0&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share

posted @ 2020-03-05 09:25  math_lin  阅读(56)  评论(0)    收藏  举报