分布式事务解决方案

 

一、消息队列

放到本地事务最后一步

发送消息写到最后边

一直重试,知道成功为止

 

 把方法分开

先发送消息,后调用本地事务

消息(事务消息) 不可消费

本地成功后再把消息改成可消费消息

本地事务失败把消息删掉

 

2PC   两阶段提交

 

二、AT-业务无侵入模式

 

第二个事务提交前等待下wait

1、首先拿到事务的控制权(封装数据源重新包装connection)

2、TXManager    各个本地事务的管理者

多个本地事务对应一个groupid

一起提交一起回滚

添加切面

 

 

三、TCC(业务层面的回滚,不是技术框架的回滚,数据库不支持事务也可以)

try comit cancel

1.账户系统

账户表

uid,余额,  冻结金额(特殊字段)

缺点:表的加字段,每个方法都得有try comit cancel,对接其他公司接口时,无法要求其他公司接口添加try comit cancel

 

2.订单系统

下一个订单

try:冻结金额+100   余额不动

comit  冻结金额-100  余额-100

cacel 冻结金额-100

 

四、saga

减错了再加回去

 

 

五、XA

XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚

六、seata(阿里)

 

posted @ 2020-10-27 14:32  jentary  阅读(125)  评论(0编辑  收藏  举报