分布式事务处理

169 阅读2分钟

比如 本地sql回滚,但是rpc调用减库存不回滚。

上游的系统告诉下游的系统,方法执行完了,可以提交了

拿到事务的控制权,本地事务的状态提交给事务管理者

@Tran

  • 建立连接
  • 开启事务
  • 执行方法
  • 提交、回滚

github.com/seata/seata

什么是分布式事务

同一个数据库连接,可以同一个事务管理

server01、server02两个系统

报错:订单回滚,库存没有回滚。 server02也要回滚。

TC:分布式事务协调者,大事务的协调者 事务管理者,发起者 RM:资源管理器

分布式事务包含很多分支,子事务,Business事务的发起方

0,什么是分布式事务 单应用多数据源,多应用多数据源等 1.分布式事务相关理论 CAP,BASE。 2.分布式事务的一个规范 XA,这里面主要就是要给2PC,XA规范实现需要数据库支持,Oracle, Sybase, DB2, SQL Server等大型数据库支持XA,免费的postreSQL也支持XA 。在java中实现这个XA 2pc规范的技术模板叫做JTA,具体的开源框架atomikos,适用场景是单应用多数据源。 3.TCC是一种柔性事务,不需要数据库支持,但是应用需要实现三个接口,准备,提交,回滚。其实就是为了实现业务的幂等。没有啥框架。 4.MQ是机制,MQ我的理解其实跟上面XA没有啥区别,XA中还是需要一个事务管理器,用来记录每一个事务状态。只不过,我们用MQ,是把这些状态记录到MQ服务器上,比如第一个事务提交成功后,我们投递到MQ的消息进行一次confirm,第二个应用消费以后,在进行一次消费成功或者失败的confirm。也就是幂等性。 5.说了这么多,无非还是为了最终的数据一致性。单机应用的ACID,分布式应用为了满足高可用,分区容错性,所以在一致性上做出牺牲,但是不是真正的不管了,而是为了最终的一致性,也就是幂等。。。。

参考: