分布式事务一

分布式事务处理一

更多干货

一、常用的分布式事务解决方案介绍

image

二、本地事务

  1. 在单个数据库的本地并且限制在单个进程内的事务
  2. 本地事务不涉及多个数据来源 image

三、全局事务(DTP模型)--标准分布式事务

  1. AP(Application Program):也就是应用程序,可以理解为使用 DTP 的程序
  2. RM(Resource Manager):资源管理器(这里可以是一个 DBMS,或者消息服务器管理系统)应用程序通过资源管理器对资源进行控制,资源必须实现 XA 定义的接口
  3. TM(Transaction Manager):事务管理器,负责协调和管理事务,提供给 AP 应用程序编程接口以及管理资源管理器
  4. 事务管理器控制着全局事务,管理事务生命周期,并协调资源。资源管理器负责控制和管理实际资源

image

全局事务(DTP模型)--XA

  1. XA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(TM)和(局部)资源管理器(RM)之间的接口。主流的关系型数据库产品都是实现了XA接口的。
  2. XA接口是双向的系统接口,在事务管理器(TM)以及一个或多个资源管理器(RM)之间形成通信桥梁。
  3. XA之所以需要引入事务管理器是因为,在分布式系统中,从理论上讲两台机器理论上无法达到一致的状态,需要引入一个单点进行协调
  4. 由全局事务管理器管理和协调的事务,可以跨越多个资源(如数据库或JMS队列)和进程。全局事务管理器一般使用 XA 二阶段提交协议与数据库进行交互

四、两阶段提交(Two Phase Commit)

  • 两阶段提交协议(Two-phase commit protocol)是XA用于在全局事务中协调多个资源的机制。
  • TM和RM间采取两阶段提交(Two Phase Commit)的方案来解决一致性问题。
  • 两阶段提交需要一个协调者(TM)来掌控所有参与者节点(RM)的操作结果并且指引这些节点是否需要最终提交。 image

五、JavaEE平台中的分布式事务实现

  1. JTA(Java Transaction API):面向应用、应用服务器与资源管理器的高层事务接口。
  2. JTS(Java Transaction Service):JTA事务管理器的实现标准,向上支持JTA,向下通过CORBA OTS实现跨事务域的互操作性。
  3. EJB:基于组件的应用编程模型,通过声明式事务管理进一步简化事务应用的编程。

优点

  • 简单一致的编程模型
  • 跨域分布处理的ACID保证

局限

  • DTP模型本身的局限 image

六、标准分布式事务解决方案的利弊

优点

  • 严格的ACID

缺点

效率非常低(微服务架构下已不太适用)

  1. 全局事务方式下,全局事务管理器(TM)通过XA接口使用二阶段提交协议( 2PC )与资源层(如数据库)进行交互。使用全局事务,数据被Lock的时间跨整个事务,直到全局事务结束
  2. 2PC 是反可伸缩模式,在事务处理过程中,参与者需要一直持有资源直到整个分布式事务结束。这样,当业务规模越来越大的情况下,2PC 的局限性就越来越明显,系统可伸缩性会变得很差。
  3. 与本地事务相比,XA 协议的系统开销相当大,因而应当慎重考虑是否确实需要分布式事务。而且只有支持 XA 协议的资源才能参与分布式事务

七、待续

分布式事务处理二

  • 13
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值