事务服务浅析

分布式事务 GTS 的价值和原理浅析 GTS 今年双 11 的成绩 今年 2684 亿的背后,有一个默默支撑,低调到几乎被遗忘的中间件云产品——GTS(全局事务服务,Global Transaction Service),稳稳地通过了自 2014 年诞生以来的第 5 次“大考”。 2019 年 11 月 1 日至 12 日,GTS 日均处理分布式事务数量达亿级,每天峰值 TPS 达万级。 这背后最重要意义在于:成绩是... 阅读详情

  事务是一个非常重要的编程概念,使用事务,可以很简单地构造出可靠稳定的应用程序,本文以许多具体的例子介绍了事务服务的概念和事务服务的具体实现。
  本文共分两部分:第一部分从事务服务整体描述的角度简要介绍了事务服务产生的动机、事务服务的应用和事务服务的功能,其中以具体的例子解释了相关概念和事务服务涉及到的一些术语;第二部分以J2EE中的事务服务为例对事务的实现作简要的介绍。

第I部分 事务服务简述
 

1. 事务综述
 

事务是一个非常重要的编程概念,使用事务,可以很简单地构造出可靠稳定的应用程序,尤其对那些需要进行并发数据访问的应用程序,事务更是重要的多。事务的概念最初应用在那些用于商务操作的应用程序上,在这些应用中,事务用来保护中央数据库中的数据。随后,随着分布式计算的发展,事务在分布式计算领域中也得到了广泛的应用。现在,在分布式计算领域中,公认为事务是构造可靠性分布式应用程序的关键。

1.1事务产生的动机

1.1.1原子操作

考虑这样一个应用:用户把钱从一个银行账号转账至另一个银行账号,需要将资金从一个银行账号中取出,然后再存入另一个银行账号中。理想来说,这两次操作都应该成功。但是,如果有错误发生,则两次操作都应该失败,否则的话,操作之后其中一个账号中的金额将会是错误的,整个操作过程应该是原子性的,两个操作都是一个原子事务操作的一部分。

可以使用异常处理来处理上述问题,代码如下:


try{
  //从账户1中取款
}
catch(Exception e){
	//如果发生错误,则终止操作
	return;
}
try {
	//如果第一步没有发生错误,则将提取出的资金存入账户2	
}
catch(Exception e) {
//如果发生错误,则终止这步操作,并且将从账户1中取出的资金再重新存回到账户1中
return ;
}

上面这种解决方法从存在着下面的问题:

  • 程序拖沓冗长
  • 必须考虑到每一步中可能发生的每一个问题,并且要编写错误处理程序来考虑如何撤销所作的操作
  • 如果执行的是比简单的取款、存款操作要复杂的多的程序,那么错误处理程序将会变得难以控制。
  • 编写测试程序将会非常困难

因此,需要一种事务处理机制来保证这种原子性的操作。

1.1.2 网络故障或机器故障

为了在发生严重故障之后,能够保证系统的状态是一致的,所以需要一种恢复性的机制来保证这一点。

1.1.3 数据共享

需要一种机制来保证多用户并发访问数据的问题。

以上这些问题的解决方法,便是使用事务服务。

1.2 使用事务服务带来的好处

使用事务,便可以利用事务的四个重要属性:ACID。

  • 原子性( atomic):事务中包含的各项操作必须全部成功执行或者全部不执行。任何一项操作失败,将导致整个事务失败,其他已经执行的任务所作的数据操作都将被撤销,只有所有的操作全部成功,整个事务才算是成功完成。
  • 一致性( consistent):保证了当事务结束后,系统状态是一致的。那么什么是一致的系统状态?例如,如果银行始终遵循着"银行账号必须保持正态平衡"的原则,那么银行系统的状态就是一致的。上面的转账例子中,在取钱的过程中,账户会出现负态平衡,在事务结束之后,系统又回到一致的状态。这样,系统的状态对于客户来说,始终是一致的。
  • 隔离性( isolated):使得并发执行的事务,彼此无法看到对方的中间状态。保证了并发执行的事务顺序执行,而不会导致系统状态不一致。
  • 持久性( durable):保证了事务完成后所作的改动都会被持久化,即使是发生灾难性的失败。可恢复性资源保存了一份事务日志,如果资源发生故障,可以通过日志来将数据重建起来。

2. 事务应用
 

事务服务支持的应用由下列实体组成:

  • 事务客户(TC,Transactional Client)
  • 事务对象(TO,Transactional Objects)
  • 可恢复对象(Recoverable Objects)
  • 提供事务支持的服务器(Transactional Servers)
  • 可恢复资源服务器(Recoverable Servers)

下图展示了一个简单的事务应用,包含了基本的事务元素:


  • 事务客户:事务客户是一个独立的程序,调用参与事务的多个事务对象。发起事务的程序被称为事务发起者(Transaction Originator)。
  • 事务对象:指那些在事务范围内行为会被影响的对象。事务对象自身包含了对持久化数据的操作或者通过事务请求间接对持久化数据进行操作。事务服务并不要求所有的事务请求都具有事务性的行为。与事务对象相对的是非事务对象。
  • 可恢复对象(Recoverable Objects)和资源对象(Resource Objects):如果事务提交和事务的回滚将影响某个对象里面的数据,那么这个对象称为一个可恢复对象。一个对象可以是事务对象而不是可恢复对象,因为事务对象可以使用其他的可恢复对象。可恢复对象必须将自己注册为事务服务中的一个资源对象,才可以参与到事务中。
  • 支持事务的服务器:例如应用服务器
  • 可恢复服务器:例如数据库

3. 事务服务提供的功能
 

事务服务提供下列操作:

  • 控制事务的范围和持续时间
  • 让多个对象参与到一个单独的原子性事务中
  • 将对象内部状态的改变同事务相联系
  • 协调事务完成

3.1事务模型

  • 平面型事务模型整个事务是一个整体,不可划分为子事务。
  • 嵌套式事务模型嵌套有子事务,子事务中还可以嵌套有子事务,整个是一个树形结构。旅行计划问题:
    • 购买从美国波士顿到美国纽约的火车票
    • 购买从美国纽约到英国伦敦的飞机票
    • 购买从英国伦敦到法国巴黎的气艇票
    • 发现没有飞往法国巴黎的气艇票
    这对于平面型事务来说,只能有一个选择:事务失败。这样由于没有飞往巴黎的气艇票,将会取消所有的出行计划。但是在这里,完全可以采用其他的旅行方式(购买火车票或者飞机票)来代替气艇。因此需要一个更加健壮的事务模型来解决这个问题。可以将整个事务划分为若干个子事务,整个事务可以重新执行单个子事务来尝试完成事务,如果最终某个单个子事务无法完成,则整个事务失败。
  • 其他事务模型
    锁链式模型、传奇式模型等。

3.2 事务的终止

通过发出提交请求或回滚请求来终止事务。通常,事务是由发起事务的客户(事务发起者)来终止的。

3.3事务的完整性

某些事务服务的实现为了保证事务的完整性,在事务服务接口的使用上施加了一些限制。这称为checked事务行为。例如,在事务的所有任务完成之前提交事务会导致数据不完整。事务服务的Checked实现会阻止事务的过早提交。其他事务服务的实现则完全依赖应用程序来提供事务的完整性保证,这称为unchecked事务行为。

3.4事务的上下文

事务上下文惟一标识了一个事务,保存了事务的当前状态。通过查询事务上下文,可以得知自身是否处于事务中,所在事务的状态以及其他一些有用的信息。

事务上下文可以作为事务操作调用的一部分隐式地传递给事务对象。事务服务也允许程序员将事务上下文作为事务请求的显示参数来传递。

4. 分布式事务
 

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。

  • 阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。
  • 阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。

在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。


为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。

以上从事务整体描述的角度简要介绍了事务服务产生的动机、事务服务的应用和事务服务的功能,下面以J2EE中的事务服务为例对事务的实现作简要的介绍。

 

第II部分 J2EE中的事务服务
 

简介
 

Java TM2 Platform, Enterprise Edition(J2EE)简化了分布式事务管理应用程序的编写。J2EE包括了两套规范,用来支持分布式的事务,一种是Java Transaction API(JTA),另一种是Java Transaction Service(JTS)。JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。JTS则规定了支持JTA的事务管理器的实现规范,在高层API之下实现了OMG Object Transaction Service(OTS) 1.1规范的Java映射。JTS使用Internet Inter-ORB Protocol(IIOP)来传播事务。作为J2EE平台实现的一部分,SUN实现了一个支持JTS的事务管理器,同时还实现了JTA。

JTA和JTS让J2EE应用服务器完成事务管理,这样就使得组件开发人员摆脱了事务管理的负担。开发者只需在部署描述符中声明事务管理属性,便可以使得EJB组件参与到事务之中,由应用服务器来负责事务的管理。

  • JTS规范定义了事务管理器的实现。JTS规范中定义的事务管理器在高层支持JTA接口规范,在底层则实现了OTS1.1(CORBA Object Transaction Service)的标准Java映射。OMG使用IDL(接口定义语言)定义了事务服务语言中性的实现,JTS则对这个IDL的事务服务实现作了标准的Java映射。JTS使用OTS接口实现了互操作和移植性。OTS接口定义了一组标准的机制,使得JTS事务管理器之间可以使用IIOP(Internet InterORB协议)来生成并传播事务上下文。
  • 从事务管理器的角度出发,事务服务的具体实现是不需要暴露出来的,只需要定义高层接口,使得事务服务的用户可以驱动事务界限、资源获取、事务同步和事务恢复过程。JTA的目的是定义事务管理器所要求的本地Java接口,从而在企业级分布计算环境中支持事务管理。下图中的小半圆代表JTA规范。


J2EE事务服务的层次关系
 

企业级Java中间件的分布式事务服务包括五层:事务管理器(Transaction Manager)、应用服务器(Application Server)、资源管理器(Resource Manager)、应用程序(Application Program)和通信资源管理器(Communication Resource Manager)。每一层都通过实现一组事务API和相关机制参与到分布式事务处理系统中。

  • 事务管理器:是一个系统级的组件,是事务服务的访问点。提供了一组服务和相关的管理机制,用于支持事务划分、事务资源管理、事务同步和事务上下文的传播。
  • 应用服务器(或者称为TP monitor)提供了支持应用程序运行环境的基础设施,这个运行环境包括了事务状态管理。应用服务器的一个例子是EJB服务器。
  • 资源管理器(通过资源适配器[Resource Adapter],资源适配器类似于数据库连接)为应用程序提供了对资源的访问。资源管理器通过实现一组事务资源接口来参与到分布式事务中。事务管理器使用这组事务资源接口在处理事务联系、事务完成和事务恢复的相关工作。资源管理器的一个例子是关系数据库服务器。
  • 基于组件的事务性应用运行在应用服务器环境中,需要依赖应用服务器通过事务属性声明设置所提供的事务管理支持。这种类型应用的典型例子是EJB。除此之外,一些独立的Java客户端程序需要使用应用服务器或事务管理器所提供的高层接口来控制事务界限。
  • 通讯资源管理器(CRM)支持事务上下文的传播和事务服务的访问请求。JTA文档中没有规定通信的要求。请参考JTS规范[2]获得有关事务管理器之间互操作的详细信息。

从事务管理器的角度出发,事务服务的具体实现是不需要暴露出来的,只需要定义高层接口,使得事务服务的用户可以驱动事务界限、资源获取、事务同步和事务恢复过程。JTA的目的是定义事务管理器所要求的本地Java接口,从而在企业级分布计算环境中支持事务管理。下图中的小半圆代表JTA规范。


JTS中规定的事务管理器的实现
 

本节从事务管理器实现者的角度描述了实现方面的要求。如下图,事务管理器必须实现JTA接口,用于支持应用服务器和资源管理器。不要求实现对JDBC 1.0 Driver和非JTA资源管理器支持。也不要求实现对各种CORBA应用实体的支持,如事务客户端(Transactional Client)、事务服务器(Transactional Server)和恢复服务器(Recoverable Server)。


Java Transaction API
 

Java Transaction API由三部分组成:高层的应用事务划分接口(供事务客户使用)、高层的事务管理器接口(供应用服务器使用)和X/Open XA协议的标准Java映射(供事务性资源管理器使用)。

4.1 UserTransaction接口

Javax.transaction.UserTransaction接口使得应用程序能够编程控制事务边界。这个接口可以由Java客户端程序或者EJB来使用。

4.1.1在EJB Server中的UserTransaction支持

EJB中对事务的管理有两种类型:

  1. Bean自管理事务对于自管理事务的EJB,需要从EJB上下文中获取UserTransaction的接口引用,由自己负责完成事务的开始、提交或者回滚。
    
    try 
    {
    javax.transaction.UserTransaction userTran = ctx.getUserTransaction();
    userTran.begin();
    … //执行事务性的程序逻辑
    userTran.commit();
    }
    catch(Exception e) 
    {
    	userTran.rollBack();
    	throw new Exception("……");
    }
    
    EJB这样处理事务称为编程型事务。
  2. 由容器负责事务管理对于这样的EJB,只需在其部署描述符中指定所需的事务相关属性,便可由EJB容器代替EJB进行事务管理。这称为声明式事务。

4.1.2 事务客户端中的UserTransaction支持

Java客户端程序需要首先通过JNDI来获得UserTransaction对象的引用,然后使用该对象的方法完成事务的开始、提交或者回滚。


java.util.Properties env = …
Context ctx = new InitialContext(env);
Javax.transaction.UserTransaction userTran = 
(javax.transaction.UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
userTran.commit()
try 
{
	userTran.commit();
}
catch(Exception e) 
{
	userTran.rollBack();
	throw new Exception("……");
}

4.2 TransactionManager接口

应用服务器使用javax.transaction.TransactionManager接口来代表受控的应用程序控制事务的边界。例如,EJB容器为事务性EJB组件管理事务状态。

4.3 Transaction接口

使用Transaction接口可以执行与目标对象相关联的事务操作。

4.4 XAResource接口

Javax.transaction.xa.XAResource接口是基于X/Open CAE规范(分布式事务处理:XA规范)工业标准XA接口的Java映射。 XAResource接口定义了分布式事务处理环境(DTP)中资源管理器和事务管理器之间是如何交互的。资源管理器的资源适配器实现了XAResource接口,将事务同事务资源联系起来,类似关系数据库的一个连接。


4.5 Xid接口

Javax.transaction.xa.Xid接口是X/Open事务标识符XID结构的Java映射。这个接口由事务管理器和资源管理器来使用,对于应用程序和应用服务器而言这个接口是不可见的。

文章引自: 事务服务浅析(IBM)

模糊高清修复真王炸!ComfyUI-SeedVR2-Kontext(画质修复+P图)本地部署教程 SeedVR2_comfyUI 是由字节跳动 Seed 实验室与南洋理工大学 S-Lab 联合开源的,专为 ComfyUI 用户开发的插件版本,官方项目名为。它主打,在图像超分上表现尤其亮眼,被多位实测者称为“目前模糊图像修复最强模型“。SeedVR2 在图像超分任务中表现突出,尤其擅长恢复模糊图像的细节,被称为“模糊高清修复真王炸”。特别的,也适合用于文字密集图像(如截图、扫描文档、老照片字幕)修复。模型通过对抗训练 + 特征匹配损失提升细节真实感,理论上对文字边缘锐化也有帮助。 阅读详情

相关推荐

医疗信创国产化替代目前面临哪些难题?如何利用国产虚拟化技术促进医院信创建设

业务系统众多,存在大量信创改造模糊地带,既有老系统,也有新系统,故障点多,管理难度高,IT人力资源不足,其对硬件的支撑能力也提出了越来越高的要求,由此造成硬件成本、管理成本以及能耗成本都非常高。

云宏winhong的博客 2657

事务服务浅析(一)

 1. 事务综述 事 务是一个非常重要的编程概念,使用事务,可以很简单地构造出可靠稳定的应用程序,尤其对那些需要进行并发数据访问的应用程序,事务更是重要的多。事务的概 念最初应用在那些用于商务操作的应用程序上,在这些应用中,事务用来保护中央数据库中的数据。随后,随着分布式计算的发展,事务在分布式计算领域中也得到 了广泛的应用。现在,在分布式计算领域中,公认为事务是构造可靠

Freecreator的专栏 1141

Loupe Browser实战指南:解锁10xGenomics单细胞数据的可视化奥秘

本文提供了Loupe Browser的实战指南,帮助用户无需编程即可探索和可视化10xGenomics单细胞数据。文章详细介绍了从数据导入、界面导航到细胞亚群鉴定、差异基因分析的核心操作流程,并分享了高级技巧与避坑指南,是快速上手这一强大可视化工具的必备参考。

weixin_29313423的博客 206

Spring事务服务

Spring事务服务 (2013-07-22 11:13:36)转载▼ ...

195

Oracle EBS订单的流程(Order->AR)

基本流程创建订单路径:Order Management > Orders,Returns > Sales Orders填写订单头信息,客户,订单类型,销售人员填写订单体信息,输入物料,数量...然后Book Order,订单Book之后,你会发现订单头的Status的状态变成了“Booked”,订单行的状态为"Awaiting Shipping",记录下来你的订单号,后边的每一步都需要这个订单号。

田攀的日志 4万+

不用买VR设备!用UE5内置模拟器开发虚拟现实项目的完整教程

本文提供了一套无需购买昂贵VR硬件的虚拟现实开发最佳实践方案。详细介绍了如何利用虚幻引擎5内置的XR模拟器,从零开始配置开发环境、模拟操作、构建场景并实现核心交互逻辑。通过这套纯软件方案,开发者可以高效学习VR开发核心,大幅降低入门门槛和成本。

weixin_29019241的博客 620

java事务服务_事务服务浅析

第II部分 J2EE中的事务服务Java TM2 Platform, Enterprise Edition(J2EE)简化了分布式事务管理应用程序的编写。J2EE包括了两套规范,用来支持分布式的事务,一种是Java Transaction API(JTA),另一种是Java Transaction Service(JTS)。JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器...

weixin_32659227的博客 381

股票价格预测的秘密武器:用C#实现蒙特卡洛路径模拟,轻松掌握市场波动规律!

摘要: 蒙特卡洛模拟是股票预测的有效工具,通过随机抽样模拟价格路径,克服传统技术分析的局限性。其核心模型是几何布朗运动(GBM),描述股价随机变化过程。C#实现的关键步骤包括:1)获取输入参数;2)生成随机数路径;3)分析结果。该方法不预测具体价格,而是提供可能的价格范围,帮助投资者评估风险。代码结构清晰,分为输入、模拟、分析和可视化四个模块,通过参数封装提高可读性,适用于不确定市场的概率预测。

墨夶的博客 601

[转]事务服务浅析(第二部分)

级别: 初级 孙瑛霖 (theyaluriver@163.com), 2002 年 6 月 16 日 事务是一个非常重要的编程概念,使用事务,可以很简单地构造出可靠稳定的应用程序,本文以许多具体的例子介绍了事务服务的概念和事务服务的具体实现。本文共分两部分:第一部分从事务服务整体描述的角度简要介绍了事务服务产生的动机、事务服务的应用和事务服务的功能,其中以具体的例子解释了相关概念和事务服...

denggui7770的博客 180

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 806

Windows 11 安装 OpenClaw(龙虾):不用WSL、不用虚拟机、启动、使用、停止、卸载

本文详解 Windows 11 原生安装 OpenClaw(龙虾)全流程,无需 WSL 或虚拟机。涵盖环境配置、安全警示、模型接入(如通义千问)及技能初始化。提供启动、文件自动化操作、停止与卸载的完整指南,并附常见认证过期解决方案。助您快速部署本地 AI 智能体,实现电脑操作自动化,提升工作效率。

寒水馨 · 轻量级技术文档 · hanshuixin.org 900

漫谈WebSphere应用服务器之事务

1.事务及事务管理器的基本概念和历史 说起事务,大部分人都马上能说出事务的四个属性:ACID(原子性、一致性、隔离性和持久性)。 事务这个概念最先来自数据库领域。我们可以看一下wikipedia上如何定义数据库事务的:A database transaction comprises a unit of work performed within a database managemen...

weixin_30294295的博客 266

Python爬虫实战:使用Scrapy+Playwright高效爬取全球石油价格历史数据

python复制下载# 产品信息# 日期信息# 价格数据price = scrapy.Field() # 收盘价open = scrapy.Field() # 开盘价high = scrapy.Field() # 最高价low = scrapy.Field() # 最低价volume = scrapy.Field() # 交易量change_percent = scrapy.Field() # 涨跌幅# 元数据。

2201_76125261的博客 1020

[转]事务服务浅析

级别: 初级 孙瑛霖 (theyaluriver@163.com), 2002 年 6 月 16 日 事务是一个非常重要的编程概念,使用事务,可以很简单地构造出可靠稳定的应用程序,本文以许多具体的例子介绍了事务服务的概念和事务服务的具体实现。本文共分两部分:第一部分从事务服务整体描述的角度简要介绍了事务服务产生的动机、事务服务的应用和事务服务的功能,其中以具体的例子解释了相关概念和...

denggui7770的博客 250

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

事务服务浅析(二)

简介 Java TM2 Platform, Enterprise Edition(J2EE)简化了分布式事务管理应用程序的编写。J2EE包括了两套规范,用来支持分布式的事务,一种是Java Transaction API(JTA),另一种是Java Transaction Service(JTS)。JTA是一种高层的,与实现无关的,与协

Freecreator的专栏 1032

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

面试官:浅析微服务下保证事务数据一致性的几种方案

1. 从本地事务到分布式事务的演变 如依赖mysql的传统的单体式应用可以通过mysql基于锁+MVCC实现本地事务的ACID特性对上层应用提供一致的数据视图,而不会因为多个事务并发读写而产生脏读、脏写、更新丢失等问题; 本文会贯穿一个相对简单的创建订单的业务场景进行讨论: 存在一个订单服务-OrderService,通过createOrder()对外提供创建订单的功能; 依赖ConsumerService的consumerVerify()进行消费者信用额度的扣除,如果余额>订单金额,则创建成功,否

诗与远方的博客 1940

【架构那些事】浅析多服务在分布式系统下多事务通信处理机制方案

队列是个好东西,用好队列更重要

killer1989的博客 699

事务回卷浅析

作者:瀚高PG实验室(Highgo PG Lab)-Chrisx 事务回卷浅析 文章目录事务回卷浅析事务ID(txid)事务可比较事务空间事务回卷防止事务回卷 在这里,我们描述事务ID回卷问题。 事务ID(txid) 每当事务开始时,由事务管理器分配一个唯一标识符 事务id(txid)。PostgreSQL的txid是一个32位无符号整数,约为42亿。如果在事务开始后调用内部函数 txid_current(),则返回当前的txid,如下所示。 testdb=# BEGIN; BEGIN test=>

HighGO 1734

MySQL事务浅析|由浅入深

MySQL事务浅析|由浅入深 很多人都在讲事务,事务是个啥,我感觉我没开事物也没什么事情啊,学事务有必要吗? 今天照旧,本文在一开始将讲解一些入门适合理解的知识,在后面逐层加深,如果对事务有了解,希望知道细节,可以在下面的目录跳一下 文章目录MySQL事务浅析|由浅入深事务是个啥?For Example1例子2 脏写例子3 脏读例子4 不可重复读例子5 幻读并发编程带来的数据库隐患通过对事务的分析,得到了四个特点 ACIDMySQL如何保证事务完好持久性的保证原子性的保证隔离性的保证|MVCCMVCC没错

可乐的博客 4612

浅析分布式事务2PC、3PC、TCC

很浅显的介绍了一下2PC、3PC、TCC的概念,如有错误还望温柔指正,分布式事务一直都是面试中比较热点的问题,也是进阶高级工程师必备的知识点。

flynetcn的专栏 2230

分布式事务浅析

在本文中,我希望把它们还是统一称为分布式事务,只不过追求强一致性的是`刚性分布式事务`,追求最终一致性的是`柔性分布式事务` 。

qq_39039639的博客 1026

浅析内存事务

简介

solotzg 2116

【Redis】事务浅析

我们知道 Redis 的单个命令是原子性的(比如 get set mget mset),如果涉及到 多个命令的时候,需要把多个命令作为一个不可分割的处理序列,就需要用到事务。 例如用 setnx 实现分布式锁,我们先 set,然后设置对 key 设置 expire, 防止 del 发生异常的时候锁不会被释放,业务处理完了以后再 del,这三个动作我们就希望它们作为一组命令执行。 Redis 的事务有两个特点: 按进入队列的顺序执行 不会受到其他客户端的请求的影响 1.事务的用法 命令 描述

A minor 633

Seata 分布式事务的使用和原理浅析

Seata 分布式事务的精简使用教程和原理浅析一、说明二、Seata 简介2.1、Seata 是什么?2.2、Seata 的整体架构2.2.1、主要角色2.2.2、整体架构和工作流程图2.3、Seata 的事务模式2.3.1、Seata 的 AT 事务模式2.4、微服务框架支持2.4.1、事务上下文2.4.2、事务传播2.5、ORM 框架支持2.6、数据库类型支持2.7、SQL 参考三、Seata 通用接入流程3.1、Seata Server 端(TC)3.2、Seata Client 端(TM和RM)3.

Andy's Blog 1554

浅析分布式事务

1、什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。 2、分布式事务的产生的原因 2...

weixin_42956626的博客 268
上一篇: 朝花夕拾 之 J2EE中的事务处理
下一篇: 成功解决事务嵌套
java008
博客等级 码龄23年 6粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值