全局和本地事务(从理论上)

全局和本地事务

·   全局事务
- 资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器一般使用 XA二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。

·   本地事务 - 在单个 EIS 或数据库的本地并且限制在单个进程内的事务。本地事务不涉及多个数据来源。

本地和全局事务都使用 javax.transaction.UserTransaction 接口划分界限,客户端必须使用此接口。本地事务不使用事务管理器,因而处理速度更快。

起初,所有事务都是本地的。如果非 XA 数据源连接是事务范围中登记的第一个资源连接,当“另一个”XA 数据源连接加入此连接时,该非 XA 数据源连接就成为全局事务。如果另一个非 XA 数据源连接试图加入,就会产生异常。

J2EE开发者有两个事务管理的选择: 全局 或 本地 事务。全局事务由应用服务器管理,使用JTA。局部事务是和资源相关的,比如一个和JDBC连接关联的事务。这个选择有深刻的含义。例如,全局事务可以用于多个事务性的资源(典型例子是关系数据库和消息队列)。使用局部事务,应用服务器不需要参与事务管理,并且不能帮助确保跨越多个资源(需要指出的是多数应用使用单一事务性的资源)的事务的正确性。

全局事务.  全局事务有一个重大的缺陷,代码需要使用JTA:一个笨重的API(部分是因为它的异常模型)。此外,JTA的UserTransaction通常需要从JNDI获得,这意味着我们为了JTA,需要 同时 使用JNDI JTA。显然全部使用全局事务限制了应用代码的重用性,因为JTA通常只在应用服务器的环境中才能使用。 以前,使用全局事务的首选方式是通过EJB的 CMT容器管理事务):CMT是 声明式事务管理 的一种形式(区别于 编程式事务管理)。EJB的CMT不需要任何和事务相关的JNDI查找,虽然使用EJB本身肯定需要使用JNDI。它消除了大多数(不是全部)硬编码的方式去控制事务。重大的缺陷是CMT绑定在JTA和应用服务器环境上,并且只有我们选择使用EJB实现业务逻辑,或者至少处于一个事务化EJB的外观(Facade)后才能使用它。EJB有如此多的诟病,尤其是存在其它声明式事务管理时,EJB不是一个吸引人的建议。

本地事务. 本地事务容易使用,但也有明显的缺点:它们不能用于多个事务性资源。例如,使用JDBC连接事务管理的代码不能用于全局的JTA事务中。另一个缺点是局部事务趋向于入侵式的编程模型。

时间: 2024-10-15 17:02:01

全局和本地事务(从理论上)的相关文章

全局事务与本地事务的区别应用(从代码方面来探讨的)

全局事务:资源管理器管理和协调的事务,可以跨越多个数据库和进程.资源管理器一般使用 XA 二阶段提交协议与"企业信息系统"(EIS) 或数据库进行交互. 本地事务:在单个 EIS 或数据库的本地并且限制在单个进程内的事务.本地事务不涉及多个数据来源.  在Hibernate配置文件中有这么两种配置方式: 1.如果使用的是本地事务(jdbc事务) <property name="hibernate.current_session_context_class"&g

IBM智慧的政府 从本地事务到国际合作

如何实现和加速"智慧地球"落地的问题被社会各界反复讨论.如何把智能融入到公共系统中?如何把所有相关环节和部门都集中起来?如何取得市民的理解和支持?从哪里开始做起?这些都不是技术问题.支持智慧地球的技术已经逐步成熟,现在需要的是社会的关注.各阶层的通力合作和资源的协调整合.领导力是引领智慧时代的推动力. 智慧地球发展进入http://www.aliyun.com/zixun/aggregation/17665.html">黄金十年,IBM 发表演讲"欢迎进入智慧

Oracle 12c多租户特性详解:全局用户与本地用户的原理与维护

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权) 编辑手记:这一节我们将介绍多租户架构中用户及权限的变化,全局用户和本地用户,管理方式和内部实现,这篇文章来自<深入解析Oracle>一书的摘录. 前情回顾:Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离 COMMON 和 Local 用户 无论在 CDB 和 Non-CDB 数据库中,用户都拥有一个 Schema,拥有一系列的 Schema 对象,在 CDB 中由于 PDB 的引入,用户

Tephra —— HBase 全局一致性事务支持

Tephra 在 Apache HBase 的基础上提供了全局一致性的事务支持.HBase 提供了强一致性的基于行和区域的 ACID 操作支持,但是牺牲了在跨区域操作的支持.这就要求应用开发者花很大力气来确保区域边界上操作的一致性.而 Tephra 提供了全局事务支持,可以夸区域.跨表以及多个 RPC 上简化了应用的开发. 示例代码: /** * A Transactional SecondaryIndexTable. */ public class SecondaryIndexTable {

为什么说传统分布式事务不再适用于微服务架构

传统应用使用本地事务和分布式事务保证数据一致性,但是在微服务架构中数据都是服务私有的,需要通过服务提供的API来访问,所以分布式事务不再适用微服务架构.那么微服务架构又该如何保证数据一致性呢?本文就来谈谈这个话题. 传统分布式事务不是微服务中数据一致性的最佳选择 微服务架构中应满足数据最终一致性原则 微服务架构实现最终一致性的三种模式 对账是最后的终极防线 传统分布式事务 我们先来看下第一部分,传统使用本地事务和分布式事务保证一致性. 传统单机应用一般都会使用一个关系型数据库,好处是应用可以使用

微服务架构下的事务一致性保证

今天我给大家分享的题目是微服务架构下的事务一致性保证. 主要内容包括4部分: 传统分布式事务不是微服务中一致性的最佳选择 微服务架构中应满足数据最终一致性原则 微服务架构实现最终一致性的三种模式 对账是最后的终极防线. 我们先来看一下第一部分,传统使用本地事务和分布式事务保证一致性 传统单机应用一般都会使用一个关系型数据库,好处是应用可以使用 ACID transactions.为保证一致性我们只需要:开始一个事务,改变(插入,删除,更新)很多行,然后提交事务(如果有异常时回滚事务).更进一步,

MySQL · 引擎特性 · InnoDB 事务系统

前言 关系型数据库的事务机制因其有原子性,一致性等优秀特性深受开发者喜爱,类似的思想已经被应用到很多其他系统上,例如文件系统等.本文主要介绍InnoDB事务子系统,主要包括,事务的启动,事务的提交,事务的回滚,多版本控制,垃圾清理,回滚段以及相应的参数和监控方法.代码主要基于RDS 5.6,部分特性已经开源到AliSQL.事务系统是InnoDB最核心的中控系统,涉及的代码比较多,主要集中在trx目录,read目录以及row目录中的一部分,包括头文件和IC文件,一共有两万两千多行代码. 基础知识

GTS for DRDS分布式事务的实现理解

GTS介绍 全局事务服务(Global Transaction Service,简称 GTS)是一款高性能.高可靠.接入简单的分布式事务中间件,用于解决分布式环境下的数据一致性问题. 一个完整的业务往往需要调用多个子业务或服务,随着业务的不断增多,涉及的服务及数据也越来越多,越来越复杂.传统的系统难以支撑,出现了应用和数据库等的分布式系统.分布式系统又带来了数据一致性的问题,从而产生了分布式事务. 分布式事务是指事务发起者.资源管理器.事务协调者及资源分别位于不同的分布式系统的不同节点之上. G

oc4j+toplink+spring使用jta外部事务的一点心得

晚上要下班的时候,application team那里使用Tibco EMS做消息集成服务时候出了bug,错误是: java.sql.SQLException: 当全局事务处理处于活动状态时, 无法调用方法 'commit',应该是在全局事务 中使用了本地事务并提交了.帮忙看了一下,它的oc4j, toplink, spring的使用上都存在着一些问题, 并把要注意的地方总结了一下. Jta外部事务,也称为分布式事务,全局事务. oc4j: ·让transaction manager知道reso