码迷,mamicode.com
首页 > 其他好文 > 详细

分布式事务4种方式,通俗易解篇

时间:2020-04-29 12:50:07      阅读:47      评论:0      收藏:0      [点我收藏+]

标签:两阶段   width   操作   2pc   根据   ima   阻塞   方式   订单   

1、链式调用方式

服务A 事务方法的最后一行 调用服务B事务方法,  服务B事务方法的最后一行 调用服务C事务方法  

因为都是每个方法的最后一行,从上往下执行,如果有任何一个服务出现问题,那么整条链路都会回滚事物

 

技术图片

 

 

 

 

2、通过mq自己手动回滚业务(补偿事务(TCC))

比如订单提交,可以先在订单服务完成订单创建,然后发消息再去商品模块去减库存,如果库存修改失败,发消息到订单模块,取消订单

 

3、阻塞方式(两阶段提交(2PC))

定义一个事物控制中心,同一个操作中的所有服务的事物全部加入到事物控制中心控制,每个服务一旦执行完毕,事物都处于等待提交状态,等待中心通知提交事物,一旦所有事物都执行完成,事物中心就通知所有的服务提交事物,反之,有一个服务失败,事务中心则通知该批次所有服务全部回滚事物

 

4、利用日志回滚事物(Seata)

 

定义一个事物控制中心,同一个操作全部注册一个全局事物id,每个服务执行完成都按照正常的事物进行提交,事物中心记录状态,如果某一个服务出现异常,那么事物中心会根据日志去挨个执行回滚操作

 

分布式事务4种方式,通俗易解篇

标签:两阶段   width   操作   2pc   根据   ima   阻塞   方式   订单   

原文地址:https://www.cnblogs.com/binz/p/12801208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!