最新《分布式系统》第七章 分布式事务处理(共42张PPT课件).pptx
《最新《分布式系统》第七章 分布式事务处理(共42张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新《分布式系统》第七章 分布式事务处理(共42张PPT课件).pptx(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 分布式事务处理 n事务处理的基本模型 n事务处理的分类(fn li) n提交协议 n并发控制 n检测并防止分布式死锁 n多复制副本数据 1第一页,共四十二页。事务处理模型(mxng) 事务处理模型是一种抽象化的计算模型。几乎所有对事务处理的定义都要求整个处理过程的原子性(atomicity) 。对某个客户(进程) 的一系列请求而言,事务处理的原子性体现在要么这些请求全部成功地执行,要么这些请求一个也没有执行(all-or-nothing)。原子性隐喻着两重含义:(1) 故障原子性(failure atomicity):即便服务器出现故障也要保证执行过程的原子性;(2) 持久性(dura
2、bility):当一次事务处理成功后,所有与该事务处理相关的结果都必须永久地保存下来。事务处理(chl)应该具备的第二特征是隔离性(isolation),即每一个事务处理(chl)过程不允许受到其它事务处理(chl)的干扰,犹如一个黑盒子,其内在的中间处理(chl)步骤是完全隐蔽的。事务处理的第三个特征是一致性(consistency) ,一致性意味着如果一个系统必须保持某些一成不变的东西,则无论事务处理发生前或发生后,这些东西依旧不变。 2第二页,共四十二页。事务处理模型(mxng)基本性质 : ACIDnAtomicity-原子(yunz)性 nConsistency-一致性 nIsola
3、tion-隔离性 nDurability-持久性 事务处理模型是临界区模型的特殊化:临界区是对各种共享资源(打印机、文件、存储器等等(dn dn)进行互斥访问的抽象,而事务处理是对共享数据进行互斥访问的抽象。 3第三页,共四十二页。基本(jbn)服务调用 服务过程解释存款存款( (账号,数额账号,数额) )将指定数额数额的款项存入给定账号账号取款取款( (账号,数额账号,数额) )从给定账号账号取出指定数额数额的款项平衡平衡( (账号账号) )返回给定账号账号的当前平衡总平衡总平衡()()返回该客户所有账号的总平衡开始事务处理开始事务处理( (标号标号) )开始指定标号标号的事务处理结束事务处
4、理结束事务处理( (标号标号) )结束指定标号标号的事务处理流产事务处理流产事务处理( (标号标号) )迫使指定标号标号的事务处理流产银行基本(jbn)业务服务4第四页,共四十二页。开始开始(kish)(kish)事务处理事务处理(T)(T) ;K K:取款:取款(A(A,100) 100) ;K K:存款:存款(B(B,100) 100) ;K K:取款:取款(C(C,200) 200) ;K K:存款:存款(B(B,200) 200) ;结束事务处理结束事务处理(T)(T)银行(ynhng)服务的例子 我们将用T、U、V代表事务处理标号,用K、M、N代表不同的银行(ynhng)分行,用A、
5、B、C代表客户的分行账号,一个客户发出的一系列服务过程调用就可以合并为一次事务处理。 5第五页,共四十二页。TS1T22T21T12T11T2T1TS3S2S2S6S5S4S1S3(a)分布式平面(pngmin)事务处理 (b)分布式嵌套事务处理S7S0事务处理分类(fn li) 其中方框(fn kun)代表事务处理,圆形代表执行操作的服务器 6第六页,共四十二页。分布式事务处理n分布式事务处理的关键在于服务及数据的分布,即一个事务处理所需的服务与数据可能分散在不同的服务器上,因此,事务处理过程就必须在多台服务器上执行。 n分布式事务处理的调度(diod)与同步-多台服务器联合执行一个事务处理
6、时需要彼此协调,才能做到整个事务处理的成功提交 -常用的方法是由一个协调者(coordinator)通过服务器之间的通信来实现最终提交 7第七页,共四十二页。分布式事务处理例子(l zi)开始(kish)事务处理(T) ;K:取款(A,100) ;M:存款(B,100) ;N:取款(D,200) ;M:存款(C,200) ;结束事务处理(T)某客户要在K、M、N三个银行分行的A、B、C、D四个账号上执行转帐业务,即从K分行的A账号取出100元,存入(cn r)M分行的B账号去,然后从N分行的D账号取出200元并存入(cn r)到M分行的C账号。假定这三个分行的数据库分别位于三台服务器上,其中S
7、1管理K分行的A账号 ,S2管理M分行的B、C两个账号,S3管理N分行的D账号 8第八页,共四十二页。分布式银行(ynhng)事务处理 TS1S3S2(1.1) 开始(kish)事务处理(T) ;(1.2) K:取款(A,100) ;(1.3) 结束事务处理(T) ;(2.1) 加入(jir)服务器(T,S1) ; (2.2) M:存款(B,100) ;(2.3) M:存款(C,200) ;(3.1) 加入服务器(T,S1) ; (3.2) N:取款(D,200) ;K分行M分行N分行协调者协调者参与者参与者参与者参与者由于每个服务器可能同时执行不同的分布式事务处理,因此在整个系统中事务处理标
8、号必须是唯一的。首先启动分布式事务处理的那台服务器是整个事务处理的协调者服务器 9第九页,共四十二页。更新(gngxn)操作分解动作n存款存款( (账号账号(zhn ho)(zhn ho),数额,数额) ) :/ 从数据库读出存款余额平衡平衡 账号读出账号读出()(); / 把更新的余额写回数据库 账号写入账号写入( (平衡平衡 + + 数额数额) ) ;10第十页,共四十二页。更新丢失(dis)问题表中含有两个转帐事务处理T和U。这两个事务处理都在分行K的同一(tngy)台服务器上执行 开始事务处理(T) : K:取款(A, 40) ; K:存款(B, 40) ;结束事务处理(T) ;开始事
9、务处理(U) : K:取款(C, 30) K:存款(B, 30)结束事务处理(U) ;分解操作分解操作平衡平衡分解操作分解操作平衡平衡A平衡 A读出()(A) 100元A写入(A平衡 40)(A) 60元C平衡 C读出()(C) 300元C写入(C平衡 30)(C) 270元B平衡 B读出()(B) 200元B平衡 B读出()(B) 200元B写入(B平衡 + 30)(B) 230元B写入(B平衡 + 40)(B) 240元11第十一页,共四十二页。非一致检索(jin su)问题 开始事务处理(T) : K:取款(A, 100) ; K:存款(B, 100) ;结束事务处理(T) ;开始事务处
10、理(U) : K:总平衡() ;结束事务处理(U) ;分解操作分解操作平衡平衡分解操作分解操作总平衡总平衡A平衡 A读出()(A) 200元A写入(A平衡 100)(A) 100元总平衡 A读出()100元总平衡 总平衡 + B读出() 100 + 200元总平衡 总平衡 + C读出() 300 + 200元B平衡 B读出()(B) 200元B写入(B平衡 + 100)(B) 300元12第十二页,共四十二页。事务处理并发时顺序(shnx)等价 当多个事务处理访问同一个数据时,顺序(shnx)等价性要求必须把每一个事务处理对该数据的完整(读/写)访问一一排序,严格禁止任何冲突 开始事务处理(T
11、) : K:取款(A, 40) ; K:存入(B, 40) ;结束事务处理(T) ;开始事务处理(U) : K:取款(C, 30) K:存款(B, 30)结束事务处理(U) ;分解操作分解操作平衡平衡分解操作分解操作平衡平衡A平衡 A读出()(A) 100元 A写入(A平衡 40)(A) 60元 C平衡 C读出()(C) 300元 C写入(C平衡 30)(C) 270元B平衡 B读出()(B) 200元 B写入(B平衡 + 40)(B) 240元 B平衡 B读出()(B) 240元 B写入(B平衡 + 30)(B) 270元13第十三页,共四十二页。顺序(shnx)等价 na) c) 三个事务
12、处理 T1, T2, T3nd) 可能出现(chxin)的调度开始事务处理开始事务处理(T1)(T1) x = 0; x = x + 1;结束结束事务处理事务处理(T1)(T1) (a)开始事务处理开始事务处理(T2)(T2) x = 0; x = x + 2;结束结束事务处理事务处理(T2(T2) (b)开始事务处理开始事务处理(T3)(T3) x = 0; x = x + 3;结束结束事务处理事务处理(T3(T3) (c)调度调度 1x = 0; x = x + 1; x = 0; x = x + 2; x = 0; x = x + 3合法合法调度调度 2x = 0; x = 0; x =
13、 x + 1; x = x + 2; x = 0; x = x + 3;合法合法调度调度 3x = 0; x = 0; x = x + 1; x = 0; x = x + 2; x = x + 3;非法非法(d)14第十四页,共四十二页。并发(bngf)控制算法n悲观算法-两阶段锁算法两阶段锁算法 (2PL)n中央控制 2PLn分布式 2PL-时间戳排序时间戳排序(pi x)算法算法 (TO)n基本 TOn多版本 TOn保守 TO-混合式算法混合式算法n乐观算法- 互斥锁,时间戳15第十五页,共四十二页。n利用互斥锁来实现顺序等价是最简单的一种并行控制方法(fngf) n服务器试图锁定一个事务
14、处理所要访问的数据,一旦某个数据被锁定之后,其它的访问请求都被挂起,直到这个数据的互斥锁被释放为止 n为了保证互斥的正确性,我们规定当一个事务处理释放了一把锁之后,就不能再申请任何新锁,也就是说,任何一个事务处理都分成两个阶段:第一阶段称为膨胀阶段(growing phase) ,在这个阶段里可以申请(任意多的)新锁;第二阶段称为收缩阶段(shrinking phase) ,在这个阶段里只准释放锁。一个事务处理必须遵循从膨胀到收缩的周期,这种周期被称为两阶段上锁(two-phase locking) 互斥锁算法互斥锁算法(sun f)(sun f) 16第十六页,共四十二页。n 膨胀阶段膨胀阶
15、段 当一个事务处理要求访问某个数据时:n1) 如果该数据尚未锁定,则服务器锁定数据,操作可以继续;n2) 如果该数据已经被另一个事务处理用写锁(互斥锁)锁定,则必须等待,直到写锁被释放为止(wizh);n3) 如果该数据被其它事务处理用读锁(共享锁)锁定,则申请锁定成功,操作可以继续;n4) 如果该数据被这个事务处理自身锁定,在必要情况下可以将锁的类型提升,操作可以继续;n 收缩阶段收缩阶段 当一个事务处理提交或流产,服务器释放所有被锁定的数据 两阶段两阶段(jidun)(jidun)锁算法(锁算法(2PL2PL) 17第十七页,共四十二页。两阶段两阶段(jidun)(jidun)锁算法图示锁
16、算法图示膨胀阶段收缩阶段时间TU冲突理由读读无一对读操作的效果与其执行次序无关读写有一对读/写操作的效果取决于它们的执行次序写写有一对写操作的效果取决于它们的执行次序18第十八页,共四十二页。利用(lyng)互斥锁进行事务处理并发控制 开始事务处理(T) : K:取款(A, 40) ; K:存款(B, 40) ;结束事务处理(T) ;分解操作分解操作互斥锁互斥锁分解操作分解操作互斥锁互斥锁开始事务处理(T)开始事务处理(U)A平衡 A读出()锁定AC平衡 C读出()锁定CA写入(A平衡 40)C写入(C平衡 30)B平衡 B读出()锁定BB平衡 B读出()等待B的锁B写入(B平衡 + 40)结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式系统 最新分布式系统第七章 分布式事务处理共42张PPT课件 最新 分布式 系统 第七 事务处理 42 PPT 课件
限制150内