四种分布式事务粗略理解
ps:个人理解 勿看,我看了都觉得傻逼
一、两阶段提交(2PC)
以web系统来说,一个聚合服务(购买请求) 对服务发送分别的请求(商品,订单,金额)方法,开启begin事务,但是不进行提交,返回结果(begin开启,commit未提交的状态)
如果成功则进行下一步,聚合服务返回要对应服务commit的请求,返回commit成功,由聚合服务对客户端返回成功
否则聚合服务发送请求回应rollback.
二、补偿事务(TCC)
每个事务都会含有两个操作,一个是正常操作,一个是事务或者异常发生问题进行一个操作回滚
每个服务将自己对应数据库的事务进行操作,如果其中有一个异常则写入回滚
三、本地消息表(异步确保)
和tcc补偿事务有点像,在每个服务对应的数据库建立一个消息表
比如 商品 订单
首先对商品减1,将减1操作和操作该事务的行为写入,通过mq(或者其他中间件)让下一个事务进行消费,消费如果异常在一定范围之内重试,异常则进行回滚并通过mq让上一个事务进行回滚
四、MQ 事务消息
每个事务开始操作和接受操作发送到mq进行是否事务成功,消费者接受mq信息对其操作
其中1-2步操作之间如果时间超过mq等待时间,会对所有的有1信息但是没有2里确定进行回调访问是否尝试or回滚,成功才会进行3-4
来源:
https://www.cnblogs.com/mayundalao/p/11798502.html
https://blog.csdn.net/wwd0501/article/details/90611671
https://www.ucloud.cn/yun/47411.html
相关推荐
LeeLuffy 2020-10-16
zjuwangleicn 2020-09-04
loviezhang 2020-08-08
打不死的小强 2020-07-03
夙梦流尘 2020-06-28
粗茶淡饭 2020-06-25
花落花开春去秋来 2020-06-20
loviezhang 2020-06-16
wenjieyatou 2020-06-09
middleware0 2020-06-09
CharlesYooSky 2020-06-06
isHooky 2020-05-30
wqbala 2020-06-04
zhangll00 2020-05-11
wqbala 2020-05-05
langyue 2020-05-03