XA和分布式事务处理

标签: xa 分布 事务处理 | 发表时间:2014-04-04 18:01 | 作者:nelson_tu
出处:http://www.iteye.com

1、分布式事务处理(DTP)模型
应用程序(AP)
事务管理器(TM):交易中间件
资源管理器(RM):通常是数据库
通信资源管理器(CRM):消息中间件
2、事务处理
本地事务:一个数据库内部的事务处理,如对多个表的操作
全局事务:DTP环境中的多个数据库的事务处理
3、交易中间件(TM)
通常多个数据库之间无法知道彼此在做什么,只将自己所做的操作影射到全局事务中,由TM通知和协调相关数据库的提交或回滚。
4、XA
交易中间件(TM)与数据库之间的接口规范,TM用它来通知数据库事务的开始、结束以及提交、回滚等。XA 接口函数由数据库厂商提供。
5、两阶段提交协议(XA规范的基础)
1)第一阶段
TM请求所有相关数据库准备提交(预提交)各自的事务分支;
数据库收到预提交请求后:
如果可以提交事务分支,则将事务分支中所做的操作固定记录(无法在该事务分支中加入任何操作),对访问的资源上锁,并给TM一个同意提交的应答;
如果无法提交事务分支,回滚事务分支中所做的操作,释放上锁的资源,并返回给TM一个失败应答。
2)第二阶段
TM审查所有数据库返回的预提交结果:
如所有数据库都可以提交,TM将要求所有数据库做正式提交,这样该全局事务被提交。
如果任一数据库预提交返回失败,TM将要求所有其它数据库回滚操作,这样该全局事务被回滚。
6、全局事务处理过程
1)AP通知TM开始一个全局事务;
2)TM通过XA接口函数通知数据库开始事务;
3)AP对数据库管理的资源进行操作,数据库系统记录事务对本地资源的所有操作;
4)TM负责记录AP操作过哪些数据库(事务分支);
5)AP操作完成后TM通过XA接口函数通知数据库操作完成。
6)AP通知TM提交该全局事务;
7)TM通过XA接口函数要求各个数据库做预提交
8)所有数据库返回成功后,TM要求各个数据库做正式提交。
7、XA的优点和注意点
优点:事务的完整性由TM和数据库通过XA接口控制,AP只需要关注与数据库的应用逻辑处理;只需通知TM提交或回滚事务,就可以控制整个全局事务。
注意点:两阶段提交,对数据库来说事务从开始到结束(提交或回滚)的时间相对较长,在事务处理期间数据库使用的资源,直到事务结束时才会释放。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [xa 分布 事务处理] 推荐:

XA和分布式事务处理

- - 企业架构 - ITeye博客
1、分布式事务处理(DTP)模型. 事务管理器(TM):交易中间件. 资源管理器(RM):通常是数据库. 通信资源管理器(CRM):消息中间件. 本地事务:一个数据库内部的事务处理,如对多个表的操作. 全局事务:DTP环境中的多个数据库的事务处理. 通常多个数据库之间无法知道彼此在做什么,只将自己所做的操作影射到全局事务中,由TM通知和协调相关数据库的提交或回滚.

文章: XA事务处理

- - InfoQ cn
本文选自迷你书 《Java事务设计策略》的第五章,译者翟静. 百度技术沙龙第二十五期:海量数据处理技术解析(4月7日 周六). 为了说明X/Open XA接口在JTA事务管理中的重要性,以及它使用的时机,我们以前一章提到的一段固定收入交易的EJB代码为例:. 这段代码中,首先预置了一笔交易,而后执行交易,这两个操作更改了数据库中不同的表.

如何实现XA式、非XA式Spring分布式事务

- - 编程语言 - ITeye博客
Spring应用的几种事务处理机制. Java Transaction API和XA协议是Spring常用的分布式事务机制,不过你可以选择选择其他的实现方式. 理想的实现取决于你的应用程序使用何种资源,你愿意在性能、安全、系统稳健性、数据完整方面做出何种权衡. 在这次JavaWorld大会上,来自SpringSource的David Syer跟大家分享了Spring应用的几种事务处理机制、三种XA式、四种非XA式事务协议.

XA式、非XA式Spring分布式事务的实现

- - Java - 编程语言 - ITeye博客
关注微信号:javalearns   随时随地学Java. Spring应用的几种事务处理机制. Java Transaction API和XA协议是Spring常用的分布式事务机制,不过你可以选择选择其他的实现方式. 理想的实现取决于你的应用程序使用何种资源,你愿意在性能、安全、系统稳健性、数据完整方面做出何种权衡.

分布式事务处理两阶段提交实例2

- - 行业应用 - ITeye博客
  Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐.   通过配合使用ObjectWeb的JOTM开源项目,在不需要Java EE应用服务器的情况下,Spring也可以提供JTA事务. Sping对JTA支持的三种方式:. 直接集成JOTM提供JTA事务管理(无应用服务器支持,常用于单元测试).

消息中间件事务处理

- - 开源软件 - ITeye博客
假设消息中间件没有提供“事务消息”功能,比如你用的是Kafka. (1)Producer端准备1张消息表,把update DB和insert message这2个操作,放在一个DB事务里面. (2)准备一个后台程序,源源不断的把消息表中的message传送给消息中间件. 允许消息重复,但消息不会丢,顺序也不会打乱.

在spring+hibernaet+mysql事务处理中遇到的一些坑

- - ITeye博客
spring的事务处理本来就是依赖于底层的实现,比如hibernate及数据库本身. 所以,当使用mysql数据库时,首先要确定的是,所操作的对象表是innodb格式的. read-only方法中进行更新或插入操作时,并不总报错. 在service层的方法中定义了事务,并且在spring配置文件中定义了如下的传播方式:.

分布式日志

- - Java - 编程语言 - ITeye博客
最近完成一个简单的日志管理系统,拿出来跟大家分享一下. 3、支持文件输出、habse输出、mongodb输出. 基于以上三点功能,我们下面详细说明. 说道支持这个功能,有个同事认为没有这个必要,他的观点是log4j的配置不需要经常变动,不需要支持这样的功能;本人的观点是“配置可以进行统一管理、而且正式机跟测试机的log4j的配置肯定会有一些差异的”,因此这个功能是必须的.

分布式事务简述

- If you are thinking one year ahead, you plant rice. If you are thinking twenty years ahead, you plant trees. If you are thinking a hundred years ahead, you educate people. - BlogJava-首页技术区
  随着系统越来越大,不断的模块化和SOA化,你的系统可能被分散于不同的机器上,这时候,你原先的单机本地事务可能已经无法满足你的需求,你可能要跨系统跨资源的去使用事务.   具体就不多介绍了,相信大家都能明白ACID特性的基本含义. 而一个具体的事务需要涉及到的模型(无论哪种模型)一般由下面几部分组成:.

Hadoop与分布式计算

- 透明 - 丕子
写本文由leftnoteasy发布于http://leftnoteasy.cnblogs.com 本文可以被全部或者部分的使用,但请注明出处,如果有问题,可以联系wheeleast (at) gmail.com, 也可以加作者的新浪微博:http://weibo.com/leftnoteasy. 很久没有写写博客了,之前主要是换工作,耽误了很多的时间,让人也变得懒散,不想花大时间来写东西.