分布式事务

2019/04/28 分布式

分布式事务

分布式事务解决的是多个服务操作数据的一致性问题。

1.XA规范

  • XA规范主要定义了全局事务管理器(Transaction Manager)和局部资源管理器(Resource Manager)之间的接口。
  • XA接口是双向的系统接口,在事务管理器以及多个资源管理器之间形成通信桥梁。
  • XA引入的事务管理器相当于“协调者”的角色。
  • 事务管理器控制着全局事务,管理事务生命周期,协调资源。
  • 资源管理器负责控制和管理实际资源(如数据库或JMS队列)。
  • Oracle,DB2,postgreSQL等都提供对XA的支持。

2.JTA

  • Java平台上的事务规范JTA(Java Transaction API)定义了对XA事务的支持。实际上JTA是基于XA架构建模的。
  • JTA中事务管理器抽象为javax.transaction.TransactionManager接口,并通过底层事务服务JTS(Java Transaction Service)实现。
  • 和很多其他的Java规范一样,JTA仅仅定义了接口,具体实现则是由供应商(如J2EEE厂商)负责提供。
  • 目前JTA的实现有以下几种:
    • J2EE容器提供的JTA实现JBoss。
    • 独立的JTA实现:JOTM(Java Open Transaction Manager),Atomikos。这些实现可以应用在不使用J2EE应用服务器的环境中。

3.TCC机制

事务管理模块在服务A,服务B执行完毕后尝试执行DB事务,之后如果全局事务决定提交,则逐个调用A和B的confirm逻辑;如果全局事务决定回滚,则逐个调用A和B的cancel逻辑。

知名的分布式事务管理器主要有Atomikos(支持XA和TCC两种机制),bitronix(仅支持XA机制),narayana(仅支持XA机制)。

对Dubbo提供开箱即用支持的分布式事务管理器有:ByteJTA(基于XA机制),ByteTCC(基于TCC机制)。

参考:

聊聊分布式事务,再说说解决方案

Search

    Table of Contents