高级软件工程 (13)(精品).ppt

上传人:hyn****60 文档编号:71996889 上传时间:2023-02-08 格式:PPT 页数:99 大小:804.50KB
返回 下载 相关 举报
高级软件工程 (13)(精品).ppt_第1页
第1页 / 共99页
高级软件工程 (13)(精品).ppt_第2页
第2页 / 共99页
点击查看更多>>
资源描述

《高级软件工程 (13)(精品).ppt》由会员分享,可在线阅读,更多相关《高级软件工程 (13)(精品).ppt(99页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、事务服务事务服务 1/99高级软件工程高级软件工程第第 十十 三三 讲讲事事 务务 服服 务务事务服务事务服务 2/99高级软件工程高级软件工程一一、动因、动因二二、事务概念及特性、事务概念及特性三三、并发控制、并发控制四四、分布式事务、分布式事务五五、CORBA 事务服务模型事务服务模型六六、JAVA 事务服务事务服务内内 容容事务服务事务服务 3/99高级软件工程高级软件工程一一、动因、动因网络环境下故障的不可避免性:网络环境下故障的不可避免性:硬件的可靠性变化硬件的可靠性变化软件的潜在缺陷软件的潜在缺陷事务服务事务服务 4/99高级软件工程高级软件工程硬件的可靠性变化:硬件的可靠性变化:

2、时间时间发生故障的概率发生故障的概率1导致:电源停电、介质信息丢失、线路中断等故障导致:电源停电、介质信息丢失、线路中断等故障浴盆曲线浴盆曲线事务服务事务服务 5/99高级软件工程高级软件工程如何面对错误?如何面对错误?在在高层(操作层)进行处理,保持系统的正确性、完整性高层(操作层)进行处理,保持系统的正确性、完整性例如:银行转帐系统例如:银行转帐系统AB从从银行银行A的帐号的帐号a向银行向银行B的帐号的帐号b转帐转帐¥10000.00(1)将将A的帐号的帐号a中的金额减中的金额减¥10000.00(2)将将B的帐号的帐号b中的金额加中的金额加¥10000.00该该过程中任何一个环节都可能出

3、错过程中任何一个环节都可能出错!如何保证系统的可接受性?如何保证系统的可接受性?事务服务事务服务 6/99高级软件工程高级软件工程逻辑越来越复杂逻辑越来越复杂集成带来的特征交互越来越多集成带来的特征交互越来越多软件的潜在缺陷软件的潜在缺陷导致:内存泄露、访问冲突、特征干扰等问题导致:内存泄露、访问冲突、特征干扰等问题事务服务事务服务 7/99高级软件工程高级软件工程访问冲突访问冲突网络环境下存在各种资源:网络环境下存在各种资源:处理器处理器存储器存储器外部设备外部设备数据库数据库软件构件软件构件为提高资源利用率,往往允许许多客户能够访问它们为提高资源利用率,往往允许许多客户能够访问它们当它们同

4、时访问同一资源时,访问冲突即可能发生当它们同时访问同一资源时,访问冲突即可能发生例如:例如:更新丢失(更新丢失(lost updates)不不一致的(一致的(inconsistent retrieval)事务服务事务服务 8/99高级软件工程高级软件工程更新丢失问题更新丢失问题存在存在3个银行帐号个银行帐号A、B、C帐面金额分别为:¥帐面金额分别为:¥1000,¥,¥2000,¥,¥3000客户客户C1 从帐号从帐号A向帐号向帐号B转转¥400客户客户C2 从帐号从帐号C向帐号向帐号B转转¥300正常结束时正常结束时 帐号帐号A减少减少¥400帐号帐号C减少减少¥300帐号帐号B增加增加¥70

5、0假如假如 C1、C2 同时访问同时访问 B(同时读取、写回同时读取、写回B的金额)的金额)得到的结果可能是:帐号得到的结果可能是:帐号A减少减少¥400帐号帐号C减少减少¥300帐号帐号B增加增加¥400C2的更新丢失了!的更新丢失了!事务服务事务服务 9/99高级软件工程高级软件工程客户客户C1:从帐号从帐号A向帐号向帐号B 转转¥400将帐号将帐号A上的金额减上的金额减¥400将帐号将帐号B上的金额加上的金额加¥400客户客户C2:从帐号从帐号C向帐号向帐号B 转转¥300将帐号将帐号C上的金额减上的金额减¥300将帐号将帐号B上的金额加上的金额加¥300Balance:=A.read(

6、)¥1000A.write(balance-400)¥600balance:=C.read()¥3000C.write(balance-300)¥2700balance:=B.read()¥2000balance:=B.read()¥2000B.write(balance+300)¥2300B.write(balance+400)¥2400结果:客户结果:客户C2的更新操作被丢失的更新操作被丢失事务服务事务服务 10/99高级软件工程高级软件工程不一致的读取问题不一致的读取问题存在存在3个银行帐号个银行帐号A、B、C帐面金额分别为:¥帐面金额分别为:¥1000,¥,¥2000,¥,¥3000客

7、户客户C1 从帐号从帐号A向帐号向帐号B转转¥400客户客户C2 计算三个帐号的总额计算三个帐号的总额正常结束时正常结束时 总额为总额为¥6000假如假如 C1、C2 同时操作同时操作得到的结果可能是:得到的结果可能是:总额为总额为¥5600 总额计算错误!总额计算错误!事务服务事务服务 11/99高级软件工程高级软件工程客户客户C1:从帐号从帐号A向帐号向帐号B转转¥400将帐号将帐号A上的金额减上的金额减¥400将帐号将帐号B上的金额加上的金额加¥400客户客户C2:计算三个帐号的总额计算三个帐号的总额Balance:=A.read()¥1000A.write(balance-400)¥6

8、00balance:=A.read()¥600balance:=balance+B.read()¥2600balance:=balance+B.read()¥5600balance:=B.read()¥2000B.write(balance+400)¥2400结果:客户结果:客户C2得到的帐号总额为得到的帐号总额为¥5600,与实际总额不一致!,与实际总额不一致!事务服务事务服务 12/99高级软件工程高级软件工程解决上述问题需要掌握如下信息:解决上述问题需要掌握如下信息:该操作包括哪些低层操作?该操作包括哪些低层操作?这些低层操作涉及哪些持久数据这些低层操作涉及哪些持久数据?这些操作的运行结

9、果如何?这些操作的运行结果如何?如果出现错误怎样处理?如果出现错误怎样处理?类似的问题已经出现在类似的问题已经出现在数据库管理系统数据库管理系统分布式操作系统分布式操作系统等领域等领域解决该问题的关键概念:事务(解决该问题的关键概念:事务(Transaction)事务服务事务服务 13/99高级软件工程高级软件工程二二、事务概念及特性、事务概念及特性事务是一系列操作事务是一系列操作它们它们 或者全部完成或者全部完成或者全部不做或者全部不做事务的事务的ACID特性特性事务的启动、提交与终止事务的启动、提交与终止事务的类别事务的类别事务的支持机制事务的支持机制 什么是事务?其特性是什么?什么是事务

10、?其特性是什么?事务服务事务服务 14/99高级软件工程高级软件工程(1)事务的事务的ACID属性属性 Atomicity原子性原子性 Consistency一致性一致性 Isolation分离性分离性 Durability持久性持久性事务服务事务服务 15/99高级软件工程高级软件工程 原子性(原子性(Atomicity)事务事务或者被全部执行或者被全部执行或者任何修改都不起作用或者任何修改都不起作用事务的起点事务的起点是是 回卷点回卷点也是也是重复执行的起点重复执行的起点事务的终点事务的终点是下一个事务的起点是下一个事务的起点事务服务事务服务 16/99高级软件工程高级软件工程共享的资源(

11、的状态)需要保持一致共享的资源(的状态)需要保持一致在下面情形中容易产生不一致的状态:在下面情形中容易产生不一致的状态:多个并发事务在互相不知晓的情况下结束多个并发事务在互相不知晓的情况下结束应用系统应用系统 定义一致性,并负责保证一致性定义一致性,并负责保证一致性如果事务不能解决不一致问题如果事务不能解决不一致问题事务可以被终止事务可以被终止 一致性一致性(Consistency)事务服务事务服务 17/99高级软件工程高级软件工程 分离性分离性(Isolation)每个事务访问资源时每个事务访问资源时任何其它事务的存在皆是透明的任何其它事务的存在皆是透明的在事务执行过程中在事务执行过程中任

12、何其它事务进行的修改皆是不可见的任何其它事务进行的修改皆是不可见的通过下列途径实现:通过下列途径实现:两阶段锁两阶段锁乐观并发控制乐观并发控制事务服务事务服务 18/99高级软件工程高级软件工程 持久性(持久性(Durability)对于一个完成的事务对于一个完成的事务其结果总是持久的其结果总是持久的 尽管后来的事务可以进一步修改其结果的值尽管后来的事务可以进一步修改其结果的值在事务结束之前在事务结束之前被修改的资源的状态必须被保存到持久存储体中被修改的资源的状态必须被保存到持久存储体中例如:磁盘例如:磁盘持续性持续性RAMEPROM等等事务服务事务服务 19/99高级软件工程高级软件工程Be

13、gin:启动一个新事务启动一个新事务Commit:结束一个事务结束一个事务存储事务过程所做的修改存储事务过程所做的修改使得修改可以被其它事务访问使得修改可以被其它事务访问Abort:结束一个事务结束一个事务取消事务过程所做的所有修改取消事务过程所做的所有修改(2)事务的启动、提交与终止事务的启动、提交与终止事务服务事务服务 20/99高级软件工程高级软件工程BeginCommitAbort事务服务事务服务 21/99高级软件工程高级软件工程Flat TransactionCommitCrashFlat TransactionRollbackBeginTrans.BeginTrans.Rollb

14、ackBeginTrans.Flat TransactionAbort(3)事务的类别)事务的类别 平坦的事务与嵌套的事务平坦的事务与嵌套的事务平坦事务:平坦事务:Flat TransactionsFlat Transactions事务服务事务服务 22/99高级软件工程高级软件工程Main TransactionCallCallCallCommitBeginTrans.BeginTrans.CommitBeginTrans.CommitBeginTrans.Commit嵌套事务:嵌套事务:Nested TransactionsNested Transactions事务服务事务服务 23/99

15、高级软件工程高级软件工程(4)事务的支持机制事务的支持机制单机环境下:并发控制(单机环境下:并发控制(2PL)多机环境下:全局控制(分布式事务:多机环境下:全局控制(分布式事务:2PC)事务服务事务服务 24/99高级软件工程高级软件工程三三、并发控制、并发控制1、概述、概述2、两阶段锁(、两阶段锁(Two Phase Locking:2PL)3、乐观并发控制(、乐观并发控制(Optimistic Concurrency Control)4、比较(、比较(Comparison)并发控制的途径有哪些?并发控制的途径有哪些?事务服务事务服务 25/99高级软件工程高级软件工程l可串行化(可串行化(

16、Serializability)l避免死锁(避免死锁(Deadlock Freedom)l公平(公平(Fairness)l并发粒度(并发粒度(Degree of Concurrency)l复杂度(复杂度(Complexity)1、概述、概述评价并发算法的准则评价并发算法的准则事务服务事务服务 26/99高级软件工程高级软件工程2、两阶段锁、两阶段锁l应用最广泛的并发控制技术应用最广泛的并发控制技术RDBMSs(Oracle,Sybase,DB/2,etc.)ODBMSs(O2,ObjectStore,Versant,etc.)Transaction Monitors(CICS,etc)l并发过

17、程需要对共享的资源进行加锁控制并发过程需要对共享的资源进行加锁控制l如果锁操作与当前资源的状态不冲突,可以如果锁操作与当前资源的状态不冲突,可以得到锁控制得到锁控制l两阶段锁机制保证操作的可串行化两阶段锁机制保证操作的可串行化事务服务事务服务 27/99高级软件工程高级软件工程l锁是锁是一个标记,标明一个进程正在以某种模一个标记,标明一个进程正在以某种模式访问一个资源式访问一个资源l最小的锁模式为:读、写最小的锁模式为:读、写l锁被锁被用来指示多个并发进程对某一资源的当用来指示多个并发进程对某一资源的当前使用状态前使用状态事务服务事务服务 28/99高级软件工程高级软件工程加锁:加锁:Lock

18、ingl进程在访问共享的资源之前,必须获得所有的锁进程在访问共享的资源之前,必须获得所有的锁 在访问共享的资源之后,必须释放所有的锁在访问共享的资源之后,必须释放所有的锁l2PL:进程一旦开始释放锁,它再不能获取其它进程一旦开始释放锁,它再不能获取其它的锁的锁l一个典型的一个典型的 2PL 加锁过程为:加锁过程为:所所获得的锁获得的锁的数目的数目时间时间 两阶段提交的过程是怎样的?两阶段提交的过程是怎样的?事务服务事务服务 29/99高级软件工程高级软件工程锁的锁的兼容性兼容性l进程是否能够获得锁取决于所请求的锁是否进程是否能够获得锁取决于所请求的锁是否与资源目前的锁状态(其它进程已请求的锁)

19、与资源目前的锁状态(其它进程已请求的锁)兼容兼容l兼容性由锁兼容性矩阵决定兼容性由锁兼容性矩阵决定l最小的锁兼容性矩阵最小的锁兼容性矩阵:ReadWriteRead+-Write-事务服务事务服务 30/99高级软件工程高级软件工程锁锁冲突冲突l如果所请求的锁与资源的锁状态不兼容,则不如果所请求的锁与资源的锁状态不兼容,则不能获得锁请求的锁能获得锁请求的锁l这被称为这被称为“锁冲突锁冲突”l处理锁冲突的方法有:处理锁冲突的方法有:强迫请求进程等待,直到冲突的锁被释放强迫请求进程等待,直到冲突的锁被释放告诉请求进程,无法获得所请求的锁告诉请求进程,无法获得所请求的锁事务服务事务服务 31/99高

20、级软件工程高级软件工程死锁死锁l2PL 可能导致死锁状态可能导致死锁状态l在该状态下,多个进程分别获取部分所需的资在该状态下,多个进程分别获取部分所需的资源,并互相等待其它进程释放资源源,并互相等待其它进程释放资源l死锁必须通过终止一个或多个相关的进程才能死锁必须通过终止一个或多个相关的进程才能得到解决得到解决l这需要被终止的进程放弃它们已经进行的所有这需要被终止的进程放弃它们已经进行的所有操作操作l解决死锁的核心在于避免死锁解决死锁的核心在于避免死锁事务服务事务服务 32/99高级软件工程高级软件工程锁锁粒度粒度l2PL适用于任意粒度的资源适用于任意粒度的资源l并发程度高的进程将需要小粒度的

21、锁机制并发程度高的进程将需要小粒度的锁机制l小小粒度的锁机制将导致需要较大数目的锁粒度的锁机制将导致需要较大数目的锁实现实现l这将导致系统开销的增加这将导致系统开销的增加l因此,在实现具体系统时,需要在并发度因此,在实现具体系统时,需要在并发度与锁开销之间进行权衡与锁开销之间进行权衡l层次锁是其中的一种折中方案层次锁是其中的一种折中方案事务服务事务服务 33/99高级软件工程高级软件工程层次锁层次锁l用于内部包含其它内容的资源用于内部包含其它内容的资源例如:例如:文件文件(包含多条记录包含多条记录)集合或序列集合或序列(包含对象包含对象)l锁锁状态增加了状态增加了 intention read

22、(IR)与与 intention write(IW)用于标识资源祖先的状态用于标识资源祖先的状态l锁的兼容性锁的兼容性:R w IR IW R+-+-w-IR+-IW-+事务服务事务服务 34/99高级软件工程高级软件工程锁的锁的透明性透明性l谁请求锁?谁请求锁?并发控制基础设施并发控制基础设施构件的实现体构件的实现体构件的客户构件的客户l第一种情形很好,但不易实现第一种情形很好,但不易实现:基础设施必须管理所有资源基础设施必须管理所有资源基础设施必须掌握所有对资源的访问基础设施必须掌握所有对资源的访问l最后一种情形是不期望的、需要避免的最后一种情形是不期望的、需要避免的!事务服务事务服务 3

23、5/99高级软件工程高级软件工程 3、乐观并发控制、乐观并发控制l2PL的复杂度与被访问资源的数目呈线性的复杂度与被访问资源的数目呈线性关系关系l如果冲突发生的概率较小时,开销偏大如果冲突发生的概率较小时,开销偏大l乐观并发控制的思路是:乐观并发控制的思路是:进程首先修改资源状态的(逻辑)副本进程首先修改资源状态的(逻辑)副本验证并发进程之间的冲突验证并发进程之间的冲突如果没有冲突:写回副本如果没有冲突:写回副本否则:取消所有修改并重新开始否则:取消所有修改并重新开始事务服务事务服务 36/99高级软件工程高级软件工程4、比较、比较l共性:共性:+都保证可串行化都保证可串行化l需要一个取消过程

24、需要一个取消过程l两阶段锁两阶段锁:l锁开销较大锁开销较大l可能出现死锁可能出现死锁+在易于冲突时工作得好在易于冲突时工作得好l乐观控制乐观控制:+冲突概率小时开销小冲突概率小时开销小+不会出现死锁不会出现死锁l在分布式系统种冲突集合得计算复杂在分布式系统种冲突集合得计算复杂l时间同步开销较大时间同步开销较大事务服务事务服务 37/99高级软件工程高级软件工程四四、分布式事务、分布式事务1、基本概念、基本概念2、两阶段提交、两阶段提交事务服务事务服务 38/99高级软件工程高级软件工程1、基本概念、基本概念分布式事务分布式事务 是是涉及多个服务器(结点)的事务涉及多个服务器(结点)的事务例如:

25、在不同银行之间进行转帐!例如:在不同银行之间进行转帐!事务是一系列操作事务是一系列操作它们它们 或者全部完成或者全部完成或者全部不做或者全部不做事务服务事务服务 39/99高级软件工程高级软件工程单机环境:单机环境:多机环境:多机环境:处理逻辑处理逻辑单机控制机制单机控制机制处理结点处理结点事务服务事务服务 40/99高级软件工程高级软件工程单阶段提交单阶段提交(不加控制):(不加控制):客户直接向各结点发出提交命令客户直接向各结点发出提交命令 如果某一结点提交失败则重复提交命令如果某一结点提交失败则重复提交命令不足:不足:客户发出命令时,结点无权力终止事务客户发出命令时,结点无权力终止事务问

26、题:如何保证参与事务的各个结点问题:如何保证参与事务的各个结点 皆正确提交(皆正确提交(Commit)?解决方式:解决方式:基于单结点的并发控制机制基于单结点的并发控制机制(每个结点保证本结点操作的事务性每个结点保证本结点操作的事务性)提供提供两阶段提交两阶段提交(two-phase commit)机制机制事务服务事务服务 41/99高级软件工程高级软件工程与分布式事务相关的分布式系统组成部分与分布式事务相关的分布式系统组成部分可以被划分为如下三种角色:可以被划分为如下三种角色:l事务性客户(事务性客户(Transactional ClientTransactional Client)l事务性

27、服务器(事务性服务器(Transactional ServerTransactional Server)l协调器(协调器(CoordinatorCoordinator)事务性事务性服务器服务器事务性事务性客户客户协调器协调器事务服务事务服务 42/99高级软件工程高级软件工程事务性客户事务性客户l仅通过协调器获取与事务相关的具体操作内容仅通过协调器获取与事务相关的具体操作内容l通过访问协调器通过访问协调器 进行进行 事务的启动与提交动作事务的启动与提交动作l事务的实现事务的实现 对于事务性客户是透明的对于事务性客户是透明的l对于事务性客户而言,一个服务器是否是事务对于事务性客户而言,一个服务器

28、是否是事务性的是透明的性的是透明的 分布式事务的启动者与提交者分布式事务的启动者与提交者事务服务事务服务 43/99高级软件工程高级软件工程事务性服务器事务性服务器l每个事务性服务器在事务协调器的控制每个事务性服务器在事务协调器的控制下下访问、修改访问、修改 资源资源l事务性服务器必须能随时访问协调器事务性服务器必须能随时访问协调器l事务性服务器必须在事务启动时向事务性服务器必须在事务启动时向协调协调器注册器注册 以便于协调器进行控制以便于协调器进行控制l事务性服务器必须实现事务协议(两阶段提交协事务性服务器必须实现事务协议(两阶段提交协议)议)分布式事务具体操作的执行者分布式事务具体操作的执

29、行者事务服务事务服务 44/99高级软件工程高级软件工程协调器协调器l实现分布式事务的关键部件实现分布式事务的关键部件l分布式事务协调者负责处理事务的分布式事务协调者负责处理事务的“开始开始”、“提交提交”以及以及“终止终止”操作操作l分布式事务协调器需要定位事务标识分布式事务协调器需要定位事务标识l不同的事务可以拥有不同的分布式事务协调器不同的事务可以拥有不同的分布式事务协调器分布式事务执行的控制者分布式事务执行的控制者事务服务事务服务 45/99高级软件工程高级软件工程Phase one:投票(投票(Voting)Phase two:完成(完成(Completion)2、两阶段提交、两阶段

30、提交事务服务事务服务 46/99高级软件工程高级软件工程Phase Onel投票阶段投票阶段协调器询问各服务器协调器询问各服务器是否能够(愿意)进行提交操作?是否能够(愿意)进行提交操作?各个服务器回应:各个服务器回应:Yes:表明可以根据指令进行提交表明可以根据指令进行提交但尚不知道是否真的将执行提交动但尚不知道是否真的将执行提交动作作 No:表明终止当前的操作表明终止当前的操作因此:因此:服务器可以服务器可以 单方面地终止一个事务单方面地终止一个事务但不能单方面地提交一个事务但不能单方面地提交一个事务事务服务事务服务 47/99高级软件工程高级软件工程Phase Twol完成阶段完成阶段协

31、调器收集投票,并决策:协调器收集投票,并决策:l如果每个服务器皆投如果每个服务器皆投 Yes,则进行提交则进行提交l如果任何一个服务器投如果任何一个服务器投 No,则进行终止则进行终止所有投所有投 Yes 的服务器将接受到:的服务器将接受到:l DoCommit 命令,如果事务将被提交命令,如果事务将被提交l Abort命令,如果事务不能被提交命令,如果事务不能被提交各服务器提交自己包含的事务操作各服务器提交自己包含的事务操作并对并对“DoCommit”命令给予回复命令给予回复(HaveCommitted)事务服务事务服务 48/99高级软件工程高级软件工程服务器的不确定时期服务器的不确定时期

32、l服务器在投服务器在投“Yes”票后,处于能够提交,票后,处于能够提交,但不清楚是否必须提交的状态但不清楚是否必须提交的状态l该时间段被称为该时间段被称为server uncertainty期期l通常该时间段很短通常该时间段很短 协调器从接受到处理各投票的时间段协调器从接受到处理各投票的时间段l仍然可能存在故障(小概率事件),导仍然可能存在故障(小概率事件),导致系统发生错误致系统发生错误事务服务事务服务 49/99高级软件工程高级软件工程两阶段提交的恢复两阶段提交的恢复l2PC启动(各服务器开始投票)之前发生的任何故启动(各服务器开始投票)之前发生的任何故障将导致障将导致“终止终止”l协调器

33、在协调器在“提交决策提交决策”之前发生错误将导致之前发生错误将导致“终止终止”l在该时刻之后(进行在该时刻之后(进行“提交决策提交决策”)发生故障,协)发生故障,协调器将重启动(该过程中协调器保存了事务参与者调器将重启动(该过程中协调器保存了事务参与者的信息),然后,重新对所有提交消息进行决策的信息),然后,重新对所有提交消息进行决策l如果在投票之后、提交之前发生故障,服务器将在如果在投票之后、提交之前发生故障,服务器将在重新启动后,通知协调器重新计算投票结果重新启动后,通知协调器重新计算投票结果l如果提交之后、回复之前发生故障,服务器将在重如果提交之后、回复之前发生故障,服务器将在重新启动后

34、,向协调器发送新启动后,向协调器发送 HaveCommitted 消息消息事务服务事务服务 50/99高级软件工程高级软件工程Coordinatorserverstep statusstep statusprepared to commit(uncertain)Prepared to commit(waiting for votes)committedcommitteddone1234Can commit?yesDoCommitHaveCommitted两阶段提交的过程:两阶段提交的过程:事务服务事务服务 51/99高级软件工程高级软件工程五五、CORBA 事务服务模型事务服务模型支持平坦事务

35、及嵌套事务支持平坦事务及嵌套事务参与角色参与角色:Transactional ClientTransactional ServerTransactional Object 集合集合Recoverable ServerRecoverable Object 集合集合至少包含一个可以进行注册的资源至少包含一个可以进行注册的资源Transaction Service控制事务的边界控制事务的边界收集参与者的信息收集参与者的信息协调事务的完成协调事务的完成事务服务事务服务 52/99高级软件工程高级软件工程Transaction ServiceTransactionalClientTransactiona

36、lServerRecoverableServerTransactionalObjectResourceTransactionalOperationTransactionalOperationbegin or endtransactionnot involved in transaction completion,may force rollbackregisters resource intransaction completion,may force rollbackParticipates intransactioncompletionTransactioncontext事务服务事务服务

37、53/99高级软件工程高级软件工程 IDL InterfacesTransaction ServiceTransactioncontexttransaction originatorrecoverableserver与线程关联与线程关联与线程关联与线程关联TransactioncontextTransactioncontextCurrentTransactionFactoryControlTerminatorCurrentControlCoordinatorRecoveryCoordinatorResourceSubtransactionAwareResourceSynchronization

38、事务服务事务服务 54/99高级软件工程高级软件工程interface Current void begin()raises(.);void commit(in boolean report_heuristics)raises(NoTransaction,HeuristicMixed,HeuristicHazard);void rollback()raises(NoTransaction);Status get_status();string get_transaction_name();Coordinator get_control();Coordinator suspend();void

39、resume(in Coordinator which)raises(InvalidControl);事务服务事务服务 55/99高级软件工程高级软件工程interface Coordinator Status get_status();Status get_parent_status();Status get_top_level_status();boolean is_same_transaction(in Coordinator tr);boolean is_related_transaction(in Coordinator tr);RecoveryCoordinator registe

40、r_resource(in Resource r)raises(Inactive);void register_subtran_aware(in SubtransactionAwareResource r)raises(Inactive,NotSubtransaction);.;事务服务事务服务 56/99高级软件工程高级软件工程interface Resource Vote prepare();void rollback()raises(.);void commit()raises(.);void commit_one_phase raises(.);void forget();interf

41、ace SubtransactionAwareResource:Resource void commit_subtransaction(in Coordinator p);void rollback_subtransaction();事务服务事务服务 57/99高级软件工程高级软件工程六六、JAVA 事务服务事务服务1、EJB事务模型事务模型2、JTA3、EJB事务情景事务情景4、构件提供者的责任、构件提供者的责任5、应用系统装配者的责任、应用系统装配者的责任6、容器提供者的责任、容器提供者的责任事务服务事务服务 58/99高级软件工程高级软件工程1、EJB事务模型事务模型事务服务事务服务 5

42、9/99高级软件工程高级软件工程EJB模型中的分布式事务服务涉及模型中的分布式事务服务涉及5个部分:个部分:事务管理器:事务管理器:transaction manager应用服务器:应用服务器:application server资源管理器:资源管理器:resource manager应用系统:应用系统:application program通讯资源管理器:通讯资源管理器:communication resource manager通过实现相互之间的接口通过实现相互之间的接口它们共同完成事务过程它们共同完成事务过程事务服务事务服务 60/99高级软件工程高级软件工程事务管理器事务管理器 提供的

43、服务与管理功能包括:提供的服务与管理功能包括:事务声明事务声明事务性资源管理事务性资源管理同步同步事务上下文传播事务上下文传播 应用服务器应用服务器(或者是传统的或者是传统的 TP monitor)提供事务处理的基础设施提供事务处理的基础设施以支持以支持 应用的运行环境应用的运行环境(包括事务语句管理)(包括事务语句管理)这样一个应用服务器的例子是这样一个应用服务器的例子是EJB server事务服务事务服务 61/99高级软件工程高级软件工程资源管理器资源管理器(通过一个资源适配器通过一个资源适配器)提供应用对资源的访问提供应用对资源的访问资源管理器实现一个事务资源接口资源管理器实现一个事务

44、资源接口 事务管理器通过该接口进行事务管理器通过该接口进行事务关联事务关联事务完成事务完成及及事务恢复事务恢复工作工作这样一个资源管理器的例子是这样一个资源管理器的例子是一个关系数据库服务器一个关系数据库服务器事务服务事务服务 62/99高级软件工程高级软件工程事务性应用系统事务性应用系统依赖于应用服务器提供的事务属性声明依赖于应用服务器提供的事务属性声明 来提供事务管理支持来提供事务管理支持这样一个应用系统的例子是这样一个应用系统的例子是利用利用EJB构件体系结构开发出来的应用系统构件体系结构开发出来的应用系统一些独立的一些独立的Java 客户程序也希望客户程序也希望 通过使用由通过使用由

45、应用服务器应用服务器或事务管理器或事务管理器 提供的高层接口提供的高层接口声明事务边界声明事务边界通讯资源管理器通讯资源管理器 向进入、发出的请求向进入、发出的请求提供提供 事务上下文传播事务上下文传播及访问事务服务及访问事务服务 等功能等功能事务服务事务服务 63/99高级软件工程高级软件工程JTA 与与 JTSJava Transaction API(JTA)是是一个一个事务管理器事务管理器 与与参与分布式事务处理的其他部分参与分布式事务处理的其他部分例如:应用系统例如:应用系统资源管理器资源管理器应用服务器应用服务器 等等 之间的接口规范之间的接口规范Java Transaction S

46、ervice(JTS)API 是是 CORBA OTS规范的一个实现规范的一个实现提供了在服务器之间利用提供了在服务器之间利用IIOP传播事务上下文的互操作传播事务上下文的互操作例如,一个例如,一个EJB 服务器厂商可以使用一个服务器厂商可以使用一个 JTS实现实现 作为低层的事务管理器作为低层的事务管理器 EJB 体系结构不要求体系结构不要求EJB 容器支持容器支持JTS 接口接口EJB 体系结构要求体系结构要求EJB 容器支持容器支持JTA 接口接口 JTA与与JTS的关系是什么?的关系是什么?事务服务事务服务 64/99高级软件工程高级软件工程事务服务事务服务 65/99高级软件工程高级

47、软件工程 2、JTAJava Transaction API 包含三部分:包含三部分:一个高层应用系统事务声明接口:一个高层应用系统事务声明接口:UserTransaction 由事务性客户使用由事务性客户使用一个高层事务管理器接口一个高层事务管理器接口 TransactionManager Transaction Synchronization由应用服务器使用由应用服务器使用一个标准的一个标准的X/Open XA 协议的协议的JAVA 实现实现 XAResource 由事务性资源管理器使用由事务性资源管理器使用事务服务事务服务 66/99高级软件工程高级软件工程事务服务事务服务 67/99高

48、级软件工程高级软件工程 UserTransaction 接口接口UserTransaction 接口向应用系统接口向应用系统提供控制事务边界的能力提供控制事务边界的能力可被可被Java 客户程序或者客户程序或者EJB 构件使用构件使用其中,其中,begin 方法方法启动一个全局性事务启动一个全局性事务并将并将事务与调用者线程关联事务与调用者线程关联transaction-thread关联关联 由事务管理器透明地管理由事务管理器透明地管理public interface javax.transaction.UserTransactionpublic abstract void begin();p

49、ublic abstract void commit();public abstract int getStatus();public abstract void rollback();public abstract void setRollbackOnly();public abstract void setTransactionTimeout(int seconds);事务服务事务服务 68/99高级软件工程高级软件工程interface javax.transaction.Statuspublic final static int STATUS_ACTIVE;public final s

50、tatic int STATUS_COMMITTED;public final static int STATUS_COMMITTING;public final static int STATUS_MARKED_ROLLBACK;public final static int STATUS_NO_TRANSACTION;public final static int STATUS_PREPARED;public final static int STATUS_PREPARING;public final static int STATUS_ROLLEDBACK;public final st

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com