四种分布式事务粗略理解

 

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

https://www.ximalaya.com/jiaoyu/11089502/55675874

 https://studygolang.com/articles/9559

相关推荐