• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 理科资料 > 正文

    [分布式数据库两阶段提交协议研究与改进] 两阶段提交协议

    时间:2019-05-03 03:17:11 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要:分布式数据库具有可靠性和并行性等优点。在实现分布式数据库的过程中需要解决的最关键的问题是保证分布式事务的原子性、一致性、隔离性和持久性。两阶段提交协议可以解决这个问题,但是也存在一些缺陷。研究分布式数据库的事务处理机制,对基本两阶段提交协议所存在问题做了详细的分析并提出了一种两阶段提交协议的改进方案。
      关键词:分布式数据库;事务;两阶段提交协议;阻塞
      中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)15-3500-03
      Research and Improvement of Distributed Database Two-phase Commitment Protocol
      LIU Ran,BU Hui
      (School of Software, North China University of Water Conservancy and Electric Power,Zhengzhou 450008, China)
      Abstract:The distributed database has the advantage of reliability and parallelism. Under the complex environment of distributed database systems, how to guarantee the distributed transaction atomicity, consistency, isolation and durability in the system realization, which are the key problem to solve. Two phase commitment protocol can solve this problem, but there are some defects. This thesis is on research of the distributed database affairs dealing mechanism, analysis of the problems existing in the basic two-phase commitment protocol, and putting forward one improvement program for a two-phase commitment protocol.
      Key words: distributed database; affairs; two-phase commitment protocol; blocking
      分布式事务具有原子性、一致性、隔离性和持久性。在分布式数据库系统中,分布式事务在各站点中被分解为子事务来执行。各子事务或者全部提交,或者全部撤销,不允许出现部分子事务提交了而其它子事务撤销的情况。为了达到这个目标,分布式事务处理程序利用两阶段提交协议来保证分布式事务的ACID特性,使分布式数据库系统具备相当的可靠性和可用性。
      1基本两阶段提交协议(2PC)
      在基本2PC协议中,分布式事务处理程序要任命一个协调者,该协调者负责分布式事务的提交或中止。该协调者一般由分布式事务的始发站点上的代理者担任,其它站点上的代理者被称为分布式事务的参与者,每个参与者负责其局部事务并向协调者提出提交或中止事务的请求。
      基本2PC协议的基本思想是只有全部子事务均提交的情况下分布式事务才会提交;如果有一个参与者不能提交其子事务则全部子事务都中止。保证所有参与者做出提交或撤销子事务的统一决定。基本2PC协议由两个阶段组成,第一阶段做出提交或撤销全部子事务的决定,称之为决策阶段;第二阶段执行第一阶段的决定,称之为执行阶段。
      在基本2PC协议的第一阶段,协调者给所有的参与者发消息进入预提交阶段,如果参与者就绪了并同意提交,就回答“提交”。在发送预提交命令之前,协调者要在日志中写入预提交记录以及所有参与者的子事务标识,然后协调者进入等待回应状态并启动计时器。当一个参与者回答“准备提交”时,要保证在其它站点故障时也能提交子事务。因此,在各子事务所在站点的日志中要记录以下内容:
      1)本站点提交子事务所需的全部运行记录。
      2)该子事务已准备就绪的记录。
      以上两点保证该子事务的状态不受其它站点故障的影响。
      在执行阶段,当协调者做出决定后,会在日志中写入“全部提交”或“全部撤销”记录。这保证分布式事务会统一提交或撤销,然后协调者向所有的参与者发送“提交”或“撤销”命令。
      所有的参与者根据协调者的命令将“提交”或“撤销”记录写入本站点日志中。同时执行“提交”或“撤销”命令并向协调者发送“执行”消息。
      协调者从所有参与者处收到执行消息,在日志中写入“完成”记录,至此分布式事务完成。
      2基本两阶段提交协议问题分析
      在基本2PC协议中,参与者在同意提交之前,可以任意终止自己的子事务。而在参与者确定了子事务的提交或撤销后,就不能再更改它的建议,必须等待协调者的最终决策。在这个期间,协调者和参与者都进入相互等待对方发送消息的状态,当与协调者和参与者相关的通信网络不稳定,特别是发生网络故障时,就很容易引发事务处理的非正常阻塞现象,这时该事务所占用的资源长期不能或根本不能释放,占用其它事务的资源,影响其它事务的处理,降低了系统的工作效率和可靠性。
      另外,如图1所示,协调者非常关键,如果协调者发生故障,势必会对严重影响全局事务。协调者和参与者需要通过网络传递准备提交、建议提交或撤销、全局提交或撤销和提交或撤销信息。当参与者较多时,协调者要与每一个参与者直接进行通信,处理信息量大,响应时间就会长。这时协调者就会成为事务处理的瓶颈。网络也会出现不稳定或有故障的现象,由此也会引发事务处理的非正常阻塞状态。
      
      图1基本2PC协议站点关系示意图
      由以上分析可见,非正常阻塞是影响基本2PC协议性能的关键因素。如果要提高分布式数据库系统的工作效率和可靠性,就必须降低非正常阻塞的发生几率,并尽可能的减少已出现的非正常阻塞对系统的影响。
      3两阶段提交协议的一些改进
      为了减轻了协调站点的负担,防止协调者出错造成事务无法完成,并缩短各子事务并行处理的响应时间,确保协调者和参与者能够从非正常阻塞状态中退出并终止。本文对基本两阶段提交协议做了如下改进:
      1)提供一个辅助协调者站点,在协调者站点出现故障的情况下接替协调者的职能,完成事务处理。
      2)为每个进程设置一个定时器。如果某个进程所期待的消息在计时器超时之前还未到达,就进行超时处理,从而提高分布式数据库系统效率、可靠性和可用性。
      改进后的方案中,在进行分布式事务处理时,由系统选定一个协调者、一个辅助协调者和完成该事务所需的所有参与者。在第一阶段,协调者向辅助协调者和所有参与者发送命令,并将辅助协调者的地址和所有参与者的地址作为附加信息在命令中一起发送。协调者将命令发出后就立即启动定时器并进入等待状态,等待接收参与者发回的回应消息。如果参与者在收到消息前发生站点故障,参与者站点会先自行进行故障恢复,如不能恢复,则直接终止全局事务,这样可以减少无谓事务的提交。如果参与者正常,参与者收到命令后,根据定时器的时间限制和本地资源情况向本地站点申请进行子事务提交所需的本地资源。如果本地资源符合事务提交条件,则发送“建议提交”消息,同时启动定时器,进入等待状态,等待协调者发送全局事务的最终决策;如果参与者没有申请到足够的进行子事务提交的本地资源,则向协调者发送“建议撤销”消息,并撤销本地资源的申请。在第二阶段中,协调者如果在定时器规定的时间内未能收到所有参与者的消息,则全局事务撤销;如果协调者收到所有参与者的消息,则根据参与者发过来的消息是提交还是撤销来做出全局事务的决策。如果收到的参与者发送的消息均为“建议提交”,则协调者通过辅助协调者向所有参与者发送“全局提交”命令,否则协调者通过辅助协调者向那些发送“建议提交”的参与者发送“全局撤销”的命令,同时将上述操作记入日志中。在执行阶段中,参与者如果在定时器规定的时间内,收到协调者关于全局事务的最终决策,则按照协调者的命令进行相应的事务处理。否则,参与者根据初始命令报文中的辅助协调者地址和其它参与站点地址向这些站点询问协调者的最终决策,根据得到的回复来决定提交或撤销事务。同时将操作确认信息发送给协调者。参与者也要将上述操作记入本地日志中,在出现站点故障时用来进行重启恢复。最后,协调者等待收到所有参与者发回的确认信息后再在日志中写入“事务结束”记录。
      如图2所示,协调者向辅助协调者和各个参与者发送命令,所有参与者如果正常工作并建议提交,则由辅助协调者把建议发送给协调者。这样相比于基本2PC协议中在各站点能正常通信并且无故障的时候确实增加了报文通信,但是当协调者发生故障时却可以保证整个系统的可靠运行。假如协调者收到各参与者发来的建议消息后发生故障时,协调者无法与辅助协调者通信,这时辅助协调者会根据系统的超时控制机制来确定协调者出现故障,由于辅助协调者记录有所有参与者的建议信息,辅助协调者可以执行协调者的职能。辅助协调者在执行协调者职能时协调者有可能恢复故障,这时系统中就会出现两个协调者,为防止这种情况发生,辅助协调者首先发送一条消息给协调者表示要执行协调者的职能,即使协调者后来排除故障恢复了,它首先要处理来自辅助协调者的这条消息,协调者收到这条消息后就放弃协调者角色,进入等待状态。辅助协调者根据刚才收到的所有参与者建议消息作出提交或撤销事务的决策。当事务结束后,辅助协调者要发送一条消息给协调者表示事务结束,辅助协调者也就不再执行协调者的职能。如果当辅助协调者在发送决策命令后发生故障,就不能执行该事务也不能把事务结束的信息发给协调者,系统会根据超时控制机制判断辅助协调者已经发生故障,这时协调者如果恢复了就会退出等待状态,重新执行协调者职能,协调者也会首先发送一条消息给辅助协调者表示要重新执行协调者职能,协调者会根据日志记录重新发送决策给所有参与者继续把事务完成。
      
      图2 2pc改进方案中各站点关系示意图
      在改进方案中,各参与站点在全局事务发起前会进行故障检测,如有站点发生故障则重启恢复,避免无用的事务提交。在协议进行的各个阶段普遍采用超时控制机制来检测故障,防止多个站点出现长时间互相等待,当部分站点出现故障而引发超时情况时,正常站点可以通过终止程序终结事务,减少因等待导致的阻塞状况出现。辅助协调站点的使用减少了协调站点的负担,而且在协调站点发生故障失效时转变职能成为新协调者,使参与者可立即结束等待状态,从另一方面减少了阻塞情况的出现。
      4结束语
      基本两阶段提交协议(2PC)在分布式数据库系统的实现中被广泛采用,但因其容易引起阻塞状态等缺陷而影响系统的工作性能。本文针对基本2PC协议的实现方法的不足,提出了一个改进方案。这种方案可以有效减少非正常阻塞发生的几率并提高分布式数据库系统的性能。
      参考文献:
      [1]邵佩英.分布式数据库系统及其应用[M].北京:科学出版社,2000.
      [2]熊燕群,白似雪.DDBMS的两阶段提交协议中阻塞问题的解决方案[J].计算机应用与软件,2006,23(5).
      [3]宋静,刘心松,赖周建,等.一种改进的2PC协议及其性能[J].微计算机信息,2006(22):3-4.
      [4]赵淑芳.分布式数据库事务处理[J].机械管理开发,2006(4): 33-37.
      [5]胡勇,陈炬华.分布式数据库的事务协议[J].情报杂志,2004(2):23-27.
      [6] Weihal Wu,Yan Wang,Cahon Pu.Two Phase Commit Protocol for Self Adapting Service[J].IEEE,2004.

    推荐访问:分布式 改进 提交 阶段

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章