work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

分布式事务介绍

Posted on 2020-05-11 22:42  work hard work smart  阅读(227)  评论(0编辑  收藏  举报

一、概念

    分布式事务就是将多个节点的事务看成一个整体处理

 分布式事务由事务参与者、资源服务器、事务管理器等组成 

    常见的分布式事务的例子: 支付、下订单等

 

二、实现思路

两段式事务和三段式事务

基于XA的分布式事务

基于消息的最终一致性方案

TCC编程式补偿事务(被认为最好的方式)

 

1、两段式事务(很少使用)

基于XA协议的两阶段提交

 保证了数据的强一致性

commit阶段出现问题,事务出现不一致,需要人工处理。

效率低下,性能与本地事务相差10倍。

 实践: 使用Atomikos分布式事务

 

2、基于XA的分布式事务

 一个事务管理器(TM)和多个资源管理器(RM)组成。

RM一般指数据库,TM对应程序中的数据源,数据源统一管理资源管理器。

提交分为两个阶段: prepare和commit

 实践: 使用Atomikos分布式事务

 

3、基于消息的最终一致性方案(用的比较广泛)

 

4、TCC编程式补偿事务

 优点:逻辑清晰、流程简单

缺点: 数据一致性比XA还要差,可能出错的点比较多

TCC属于应用层的一种补偿方式,程序员需要写大量的代码

 

 

三、基于消息的最终一致性方案与TCC编程式补偿事务的区别

基于消息事务是强一致性事务,会存在资源浪费

TCC事务是柔性事务,在try阶段要对资源做预留

TCC事务在确认或取消阶段释放资源

与基于消息事务对比,TCC的时效性更好

 

四、分布式事务框架

全局事务服务(Global Transaction Service,简称GTS)

蚂蚁金服分布式事务(Distributed Transaction-eXtended,简称DTX)

开源TCC框架(TCC-Ttansaction)

开源TCC框架(ByteTCC)

 

五、Seata总结