高级软件工程 (13)(精品).ppt
《高级软件工程 (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高级软件工程高级软件工程单阶段提交单阶段提交(不加控制):(不加控制):客户直接向各结点发出提交命令客户直接向各结点发出提交命令 如果某一结点提交失败则重复提交命令如果某一结点提交失败则重复提交命令不足:不足:客户发出命令时,结点无权力终止事务客户发出命令时,结点无权力终止事务问
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级软件工程 13精品 高级 软件工程 13 精品
限制150内