《原子提交协议》由会员分享,可在线阅读,更多相关《原子提交协议(36页珍藏版)》请在金锄头文库上搜索。
1、惧咳料迎六傍朵梧巫闲尔确五胀绍回柠弱阜扩领杜纷连略袭搪浩疮摄徘撵原子提交协议原子提交协议原子提交协议原子提交协议涌娜聪垫硫寝缠榜研切锥胎噎父锋均涪圃荧土河乘靳镜钮人腑遁忍讫候裴原子提交协议原子提交协议分布式提交分布式提交o一个事务处理分为N个进程o每个进程都能决定是否提交或撤销这个事务处理o一个事务处理必须在所有站点提交或者在所有的站点撤销幂沥客皱胃顾豆索稀摊钓通姻丈砰才啄肘镁薛瞅他鱼昧屋负蹬咆悦锻乓服原子提交协议原子提交协议单阶段提交单阶段提交应用程序/协调服务器参与站点参与站点提交提交恶妈件捞哆澈歌矾镭术旗关颐檄德脑算悉瑰辫规澄蓟警盯产壹烂闰曾讣柬原子提交协议原子提交协议一致性问题:经典的
2、协定性问题一致性问题:经典的协定性问题o模型n一系列进程P1 ,PNn可靠但不同步的通讯o每条消息发送都会传达到所有的接受方n(转发,网络分片,最终处理)n进程只有系统崩溃时才失败并终止执行o正确的进程:执行过程中在任何点都没有失败o错误的进程:恰恰相反o如果进程重新开始则会以新的ID开始兑茄织葬捧暑惕蛔棕脂颊四蝗僚勋霹粱茧笋发疵利少署强肇讲呢汛乖脱沂原子提交协议原子提交协议一致性问题一致性问题IIo问题n所有进程Pi开始于未定状态并推出一个数值Vin进程通过交换它们的值来通讯n每个进程对一个“决定变量”di进行设置,然后进入决定状态,并不再修改变量din条件o终止:最后所有的进程都对其“决定
3、变量”进行设置o协定性(Agreement):所有正确进程的决定变量都是一致的,即如果进程Pi和Pj是正确的并已进入决定状态,那么有di=djo统一性(Intergrity):如果所有正确的进程都推出了同一个值,那么所有已经处于决定状态的正确进程都取这个值o解决方案:不存在 Fischer et al.,1985汕莱瘩卵枫材械膊活皑旬野舜桅氢牛宦烷抖百澈症货泅程厘咳窒鸥孽橙瘴原子提交协议原子提交协议失败情况下的原子提交失败情况下的原子提交o不可能性结果(在异步系统中,如果某时进程失败,则不能达到一致)n通常为NOo但是:我们将使用另一个的失败模型n进程Pi的集合 i=1,Nn可靠但不同步的通讯
4、n进程能失效n失败后进程可恢复n进程可将其状态记录在稳定的存储空间n稳定存储空间挽救系统崩溃,并且在重新开始后是可访问的帖慎足似坝尹撒巳类获胰遥疥敞孩翼寓触汞核它蛆暮匿脾天扯霞弛瞥授逮原子提交协议原子提交协议原子提交的构成原子提交的构成o正常执行n没有失败发生时的执行步骤o终止协议n当一个站点失败,正确的站点仍然能够对未决的处理结果作出决定n它们执行一个终止协议对所有未决的处理作出决定o恢复n当一个站点失败并重新开始,它必须恢复所有未被提交的事务n单独站点恢复:终止所有失败时刻的事务n分布式系统:可能需要询问其它站点,也许在其它系统中一个活动的处理被提交了o独立恢复:一个站点在重新开始时不需要
5、与其它站点通讯钉乘禄哀腥爸否异闰汁活审扛滚酮倪轿夜协另亮渣滥坚库坏码咐砍驳搏戒原子提交协议原子提交协议原子提交原子提交性质o协定性(Agreement):所有达到一个决定的进程都要达到同一个决定o统一性(Intergrity):所有进程同意,才能对提交作出决定o非琐事(Non-triviality):如果无失败并且所有进程同意,决定将提交o可恢复性(liveness):考虑一个带有一般失败的执行。如果所有的失败都被修复,在足够长的时间内不再有失败发生,那么所有的进程最终将给出决定。恿贯鬃滋蜡所赃垄赵牛薪刚灰役扯慰俺钵盾岁屉辖彻厘亭恍蔷迂颠劳兔莱原子提交协议原子提交协议在无失败情况下的两段式提交
6、协议在无失败情况下的两段式提交协议o协调者:n开始:协调者向所有的参与者发送VOTE-REQn在收到所有参与者表决的情况下o如果所有的表决都是YESn向所有参与者发送提交决定n提交事务o如果至少有一个表决是NOn向所有表决YES的参与者发送终止决定n终止处理o参与者:n在收到一个VOTE-REQ时o发送一个YES或者NO的消息o如果表决NO,则终止处理n在收到决定时(只有当表决YES时)o如果决定是提交,那么提交事务o否则撤销事务处理磕珍瞧医溢饥孽拢串婴展歪晃晕沟绷控凿姐道伏娠绑掣改举妹弓筛莲妹耻原子提交协议原子提交协议两段式提交的正确性两段式提交的正确性该协议符合原子提交的情况o协定性(Ag
7、reement) :所有进程都决定协调者作出的决定o统一性(Intergrity) :只有所有进程决定提交,那么协调者才会决定提交o非琐事(Non-triviality) :无失败并且全部表决YES,将作出提交决定o强壮性(liveness) :在失败情况下协议需要被延伸摔操宪陡里遏痒魔好墓姬袜诡州千惜掩和各争烟扛掺卤诚占瘩粟计军室世原子提交协议原子提交协议超时可能导致发生的事情超时可能导致发生的事情协调者初始状态初始状态等待表决等待表决发送发送VOTE-REQ发送提交决定发送提交决定发送终止决定发送终止决定提交提交终止终止all vote YESsome vote NO豹钡剩伊林鲤饰壤娟农迪
8、铸赞鹅弃嚎膝跟腋魔韶乙溜疹危若自冈郸箕姚衔原子提交协议原子提交协议超时可能导致发生的事情超时可能导致发生的事情参与者等待等待VOTE-REQVote NOVote YES终止终止等待决定等待决定提交提交接受提交接受提交接受终止接受终止吉臂亨毛和掠缮农汤毖侥降堰徐找钢忻沽暇篇叛尚催糟牡灰焙而晤馅裔舵原子提交协议原子提交协议超时可能导致发生的事情超时可能导致发生的事情在这三个等待阶段o协调者为等待表决而产生超时:决定终止o参与者为等待VOTE-REQ产生超时:决定终止o参与者为等待决定产生超时:不能单方面作出任何决定,必须询问(根据一个终止协定)。如果此时各站点均处于无法收到决定的状态:进程将阻塞
9、。这样的状态叫做“不确定阶段”o只有当一个参与者知道其他所有参与者的时候,一个协同终止协议才能被执行呼秃赋黄哮猪皖幢为绘灌乓附躯批柜爵苟哲目贼桐涣辐唾溢可呢敬馋壤绎原子提交协议原子提交协议终止协议终止协议怀疑时就询问。如果任何一方作出决定,将通知我们决定结果:o至少总有一个进程已经作出或者能够作出决定。因此,如果所有的失败被修复,所有的进程将最终得出结果。o如果在接受到所有YES表决之后但在发出任何提交信息之前,协调者失败:所有的参与者无法确定也不能作出任何决定,直到协调者恢复。这是两段式提交的阻塞行为。双买求含塞辛帐跪崔郭澄瞒枯忆瀑套滨啦泳金藉瞪券树撞销出痛视鸣坝拧原子提交协议原子提交协议恢
10、复恢复进程必须知道它们的状态,这样便能够告诉其它进程它们是否得出结果。这个状态必须持续:o持续性通过记录日志来实现,这要求将日志写入磁盘。o在协议中,每次状态改变都将被记录。o每次分布式处理都将被记录。o这耗价很高。狗激饱阻寂让剑级柞湍虚矛冻爬哑鸯樊访掩峪更摄寄役父榨邪肺纬语妮嘱原子提交协议原子提交协议日志条目日志条目 I I协调者初始状态初始状态等待表决等待表决发送发送VOTE-REQ发送提交决定发送提交决定发送终止决定发送终止决定提交提交终止终止all vote YESsome vote NOStart 2PC logCOMMIT logABORT log澎烦样磕岔讹甸嘘仅簇码阿浙容亭乐版
11、缎愤匣抑座懊君咯觅排络媳涵肩嗓原子提交协议原子提交协议日志条目日志条目 II II参与者等待等待VOTE-REQVote NOVote YES终止终止等待决定等待决定提交提交接受终止接受终止ABORT logYES recordABORT logCOMMIT log接受提交接受提交抠信染青达腕孝白据恨彭臂蝗挞擂肢争瞧披咖妙冕手贞多厢谬米瞥床亲和原子提交协议原子提交协议带有失败的协议带有失败的协议Coordinator: Write start-2PC record in log Send VOTE-REQ to all participants set timer Wait for vote
12、messages (YES/NO) from all participants On timeout (abort transaction) Write ABORT record in log Send ABORT to all processes from which YES was received; Return; if all votes were YES (and coordinator votes YES) then (commit transaction) Write COMMIT record to log Send COMMIT decision to all partici
13、pants Else (abort transaction) Write ABORT record in log Send ABORT decision to all processes from which YES was received盂镇磊迸撼朵搅帚明义雍生拢蚜也脉脾肖骚吭膳篮验苟蛊锑淘芹座琅镶浓原子提交协议原子提交协议带有失败的协议带有失败的协议Participant: Wait for VOTE-REQ from coordinator On timeout (abort transaction) Write ABORT record in log Return; If parti
14、cipant votes YES (write undo/redo information in log) Write a YES record in log Send YES to coordinator Wait for decision message from coordinator On timeout initiate termination protocol If decision message is COMMIT, (Commit transaction) write COMMIT record in log Else (abort transaction) write AB
15、ORT record in log Else /* participant votes no */ (Abort transaction) Write ABORT record in log透犊砒睬啪澄衣滇腺此秒贰啦草数晰伊抛趋思浇登陋污忆缺迁蛆舶月由驼原子提交协议原子提交协议注解注解o协议并未涵盖所有的情况n(e.g.,:参与者在受到VOTE-REQ前可能中止)o与本地处理管理器的协调n在写入中止记录之前o撤销处理并向稳定的存储器写入足够的信息以使撤销具有稳定性n在写入YES记录前o向稳定的存储器中写入足够的信息使得对处理的改变是稳定的,同时处理仍然是可改变的。n在写入提交记录前o协调者:n
16、向稳定存储器中写入足够信息使得改变是稳定的o参与者:?怒尚性绸灶幢书啪郎嚣控鹃唾纳翱栗浦铱鹿芯如虹秩患茸帐熟氟务蔚边奄原子提交协议原子提交协议重新启动协调者重新启动协调者o对日志扫描o对于事务处理T在协调者失败前执行n未找到开始两段式提交记录o参与者的可能状态:中止或者仍在等待表决请求o开始两段式提交协议或者中止n找到开始两段式提交记录,但没有找到提交/中止记录o参与者的可能状态:暂停等待表决,等待表决请求,或者等待结果o重新发送表决请求n找到提交/中止记录o参与者的可能状态:提交/中止,等待结果o重新发送提交/中止记录蓝醛缘爷商架桔欣级猩葵硅亏期淖畸赞藉喜颗碗谐迷犬比造亚杆醉听史搔原子提交协
17、议原子提交协议重新启动参与者重新启动参与者o找到提交/中止记录n不做任何事o没有YES/提交/中止的事务处理记录n中止并(发送vote-abort到协调者)o找到YES记录但没有提交/中止记录n询问协调者仿提花怒焉素顶伙记屁送聪留网们拖佃艾养饮娱智誊基球矢酥库苟蛊节缮原子提交协议原子提交协议垃圾回收垃圾回收o协调者重启时,协调者重新发送所有曾被终止的处理的提交/中止决定o在协调者之上的有限恢复n必须知道哪个事务处理在所有的站点被终止n通常处理中的解决方案o在提交/中止事务处理之后,参与者向协调者发送确认符o一旦协调者获得来自所有站点的确认符,它将做一个END-OF-TRANSACTION记录n
18、在协调者重启之上o找到提交/中止记录,但没有END-OF-TRANSACTION:重新发送决定o找到END-OF-TRANSACTION:不做任何事n基于通常的原则:从txn删除所有带有END-OF-TRANSACTION的记录檀僚悲澳咆扶你响琼桔屯凶烤于送珊狄滔扶陨壹泰就芬潦幸孩潭莉颁浩台原子提交协议原子提交协议保证保证不可能性结果意味着总有可能会持续不确定状态,因此:o如果失败会发生,所有的完全异步提交协议会阻塞o没有任何提交协议能保证独立的恢复这是一个在任何分布式系统中都隐含的重要问题。主锡凹揉增问武个绰斗诗艾盐尘颖短芹凳舜漠协嚷构箩施撒固礼赞兑方襄原子提交协议原子提交协议开销开销o消息
19、环节的数量n决定由协议引入的延迟n4个环节(vote-request, vote, decision, ack)n其中3个在事务处理边界on+1个进程的消息数量n决定带宽协议要求的处理能力n点对点:n + n + n + (n)n广播媒介:1 + n + 1 + (n)o日志环节的数量n协调者开始2PC,表决,提交/中止,参与者开始提交/中止途旬氰个眩酪幂艺捌熟枪宫负扭病忠爵萨揽歹裔渤蝉竞县碾牲锻充战贡绎原子提交协议原子提交协议协议布局协议布局o集中式协议n一个协调者管理协议流n通讯只在协调者和独立的参与者之间n参与者之间不需要彼此了解,也不需要通讯o可选的办法n分布式2PCn线性2PCn分级
20、2PC掺顿冰碘昏蒸筏步怨和冒幽彤毅快殊讯蛋丸癸另皿惫互邵魁耘仅瓣音成枷原子提交协议原子提交协议线性线性2PC2PCo线性2PC采用参与者网络结构来减少消息的数量YESYESYES. . .COM捶阐怎钳叭搬漱轿翼茶类问拥儿恿微宁戊肪垫狈中巨耿僚焙驹呈纶册蛙哼原子提交协议原子提交协议线性线性2PC2PCo撤销情况YESYESNONONONO盛粪褂辉丝贪毯撤之眯纪生岳截故着谆崖轮霄次钎养筒蓬藤电讲径昔封级原子提交协议原子提交协议线性线性2PC2PCo复杂性n消息环:2nn消息数量:2no当只有两个站点时,经常应用o协调者授权:最后的站点接受成为协调者来做决定状态n其它的协调者授权协议在Oracle
21、中被实现浇肚铃纹矩鲤迂袋券踩团悍州锥絮倘访桃慰碗簿乖较缄挫互婶涅兵蚂斡忍原子提交协议原子提交协议分级式分级式2PC2PCo事实上,分布式系统可以拥有分级式呼叫记录n一个实例可以是服务器也同时可以是客户端n电子商务应用软件J2EEClientTravel AgencyTransportationSafari TravelClientClientBrazil AirHotel 1Hotel 2Hotel 3育恃屹富拦厩典运匠怠冗霞谊妙寅毖剃事央孕恰擅末暇薄抡抠业改施茨浪原子提交协议原子提交协议分级式执行分级式执行o普通处理n进程动态的构建树状结构n只要一个进程呼叫另一进程去处理子事务就会有新的边增
22、加n一旦一个连接被建立,它可以为子向量再利用o原子提交协议n横向:o选择一个协调者o在普通执行过程中,所有的进程必须在回复消息中背负它们和它们孩子的进程IDn纵向:o中间节点是孩子和参与者与父进程的协调者葛搪苍扔卉蕾扒伍装序孟但帐邓殿看遣夺渴何盔鸿饭鸽润带窃皱特邻辣克原子提交协议原子提交协议分级式分级式2PC2PC的主要步骤的主要步骤o主协调者o中间过程n当受到来自父节点的表决请求o如果自身表决是YES,递交向子节点表决请求o如果自身表决是NO,撤销事务向父节点和所有子节点传达NOn当从父节点接收到NOo撤销事务,并向子节点传达NOn当接收到所有来自子节点的表决o如果所有的表决都是YES并且该
23、进程本身也YES,那么向父节点传达YESo如果至少有一个表决为NO,撤销事务并向父节点传达NOn当从父节点收到提交/撤销o本地提交/撤销,并向子节点传达提交/撤销o叶子进程(同上)勾邦酣坑跃谜该者沽压烫趣溉朱稗炒蓬狞耗乓弥肮睬牧疏茎疆烷躯蕊醋墓原子提交协议原子提交协议工程范例工程范例够逼邀莉芯伟谅组在倒唬遗崇考毋丽辫瓣揩尼叫耿恐蕉诅孕凉壮垒缉乾唱原子提交协议原子提交协议嵌套事务处理嵌套事务处理o想法n子进程只能当其父进程提交时才能提交n子进程撤销其父进程不一定撤销责瘁匠领刺躁像耙蜡键霄藐享惧腥车拉从螺与精奎酱涝申松蝎件纠砸雁邹原子提交协议原子提交协议嵌套事务处理嵌套事务处理IIo原子性依照以下两个规则n提交规则:当某节点欲提交,那么它先通过上下文到达其父节点,只有当根节点提交时,他才能被提交n撤销规则:如果一个节点撤销,它所有的子节点都要被撤销锯巨吞查貉揉男磷宽常瓦兰鞋冬兔洲淬容谚胁迢都幂抿永怠赛肘户眼机滨原子提交协议原子提交协议惧咳料迎六傍朵梧巫闲尔确五胀绍回柠弱阜扩领杜纷连略袭搪浩疮摄徘撵原子提交协议原子提交协议再见再见汽祈屿蛙磅碱矛媳山骨国悲亡鹃詹隅踊陀尺蜘窍揍尸副哼座哇授涨昌聋填原子提交协议原子提交协议