一种具有前向恢复特征的后向恢复容错方法

文档序号:9489341阅读:794来源:国知局
一种具有前向恢复特征的后向恢复容错方法
【技术领域】
[0001] 本发明涉及分布式系统基于消息重排序消息日志故障恢复方法。
【背景技术】
[0002] 在分布式系统后向恢复容错研究领域,按保存信息的类型,回卷恢复协议可分为 基于检查点的回卷恢复协议和基于消息日志的回卷恢复协议。基于消息日志回卷恢复的协 议又细分为悲观消息日志和乐观消息日志。
[0003] 采用悲观消息日志[1]的系统中,进程接收消息后总是先将其保存至消息日志 中,然后才提交给应用程序处理。此特征确保进程所接收消息及其接收次序完整保存在消 息日志文件,使得进程的故障恢复较为简单;但是由于接收消息后须先保存消息信息至消 息日志因此严重影响了系统正常运行时的性能。按由何进程保存消息信息至消息日志分, 悲观消息日志协议分为基于发送者的消息日志协议(sender-based) [2] [3] [4]和基于接 收者的消息日志协议(receiver-based)。
[0004] 在基于接收者的消息日志协议中,进程接收消息后首先把消息的接收次序等信息 存入消息日志,然后再提交此消息给应用程序处理。
[0005] 在基于发送者的消息日志协议[2] [3] [4]中,消息的发送进程发送一个消息前首 先把消息内容保存在内存缓冲区中,然后发送此消息至接收进程。接收进程接收消息后先 把该消息的接收次序传送给消息的发送进程,然后再提交消息至应用进程。消息的发送进 程接收到消息的接收次序后把消息的内容及其接收次序统一存入消息日志。
[0006] 采用乐观消息日志[1]的系统中,进程接收消息后即刻提交给应用程序处理,而 后在进程空闲时才保存所接收消息至消息日志。此特征使得系统进程在正常运行时具有良 好的性能;然而发生故障时,若存在进程已接收且未保存至消息日志的消息,此类消息的接 收次序必然丢失,使得进程的故障恢复极为复杂。
[0007] 基于消息重排序和消息数目检验的日志恢复协议[5] [6],采用消息重排序方法, 较好解决了乐观日志中由于进程故障所导致的消息接收次序丢失问题。该协议下的发送进 程在发送消息时以逻辑时钟间接标记此消息的接收次序并将消息及其逻辑时钟保存在发 送进程本地存储中。接收进程接收消息后,首先把消息提交给应用程序处理,然后在进程 空闲时间把消息及其接收次序保存至消息日志。当消息接收进程发生故障时,恢复进程首 先从消息日志取得已保存的消息及其逻辑时钟,然后根据发送进程和接收进程所保存消息 数目的差值从发送进程的本地存储中取得因进程故障未能保存至消息日志的消息及其逻 辑时钟。然后根据消息的逻辑时钟对消息重新排序,并实现消息的重演。此协议下的进程 在正常执行时,接收到消息后即刻提交给应用程序处理,仅仅在进程空闲时间保存消息信 息至消息日志。上述特征使得此恢复协议实质上仍属于乐观消息日志协议;在此协议下进 程正常执行时具有良好性能,且在某个进程发生故障时其恢复算法较为简单。
[0008] 消息重排序和消息数目检验的日志恢复协议的主要缺点是在程序正常运行时,进 程接收到消息后仍需在进程空闲时间把消息保存至消息日志。然而该协议下发送进程发 送消息前已把消息的内容及其逻辑时钟值保存至本地存储,接收进程端的消息日志是冗余 的,故该协议算法还可进一步优化。
[0009] 修改后的重排序恢复协议[7]仍然基于重排序基本理论进行算法设计,但对恢 复协议作了较大修改,主要是去除了消息接收进程端的消息日志。在此协议中,消息发送 进程发送消息前先保存消息的内容及其逻辑时钟至消息日志,消息接收进程接收消息后, 即刻提交应用程序处理,且此后不再保存任何消息信息。与基于发送者的消息日志协议 (sender-based) [2] [3] [4]相比较,修改后的重排序恢复协议中的接收进程接收消息后无 需转送消息接收次序至发送进程,从而使得进程正常执行时具有良好的性能且确保在进程 故障恢复阶段系统不存在任何孤儿进程。
[0010] 修改后的重排序恢复协议[7]彻底摆脱了悲观、乐观协议的束缚,形成了一种同 时具备悲观和乐观协议优点的全新容错恢复协议。此协议具有以下主要特点:
[0011] 1)进程发送消息前一次性保存消息的内容及指示消息接受次序的逻辑时钟至消 息日志,然后发送消息至接收进程。此特点使得该协议具有悲观消息日志协议特征,即任一 时刻系统不存在孤儿进程。
[0012] 2)进程接收消息后不保存任何消息信息,因而该协议下的进程在正常执行时较乐 观日志协议下的进程具有更优良的性能。此特点使得该协议完全不同于悲观和乐观协议, 且其系统在正常执行时的性能优于乐观协议。
[0013] 3)某进程发生故障时,无故障进程有条件继续执行;因而在进程故障恢复阶段, 重排序恢复协议下的进程较悲观日志协议下的进程具有更优良的故障恢复性能。
[0014] 4)任何进程可在任意时刻独立保存其进程状态(检查点)。
[0015] 修改后的重排序恢复协议的上述特点使得其各项性能指标均优于现有的所有消 息日志协议。然而该协议仅仅给出了无故障进程运行的条件(限制一个故障进程向另一个 故障进程发送消息等条件),却没有给出无故障进程有条件执行的具体实现方法,故限制了 协议的应用。
[0016] 本发明的目的及所能达到的效果:
[0017] 完善重排序恢复协议,提出一种便于以程序设计员语言实现的基于重排序理论的 后向恢复容错方法。该方法具有类似修改后的重排序恢复协议[7]的基本特征,并具有如 下独特之处:1、对无故障进程故障状态下条件运行的理论和方法进一步完善,2、增加进程 故障标志位,并通过故障位控制无故障进程在系统故障恢复阶段有条件运行。
[0018] 消息重排序基本原理
[0019] 在分段确定(PWD)假设下,进程的消息接收事件具有随机性,即消息的接收在时 间和次序上具有不确定性,但是消息的发送事件确是确定事件。
[0020] 如图1所示,假设分布式系统由进程p、q和r组成。其中,δρ,。、δ。。和δ^分别 表示P、q和r的初始状态间隔;δq,2分别表示进程q接收消息&和…后的状态间 隔;tpq和tq分别表示进程p和q之间以及q和r之间的通信信道延时。在乐观消息日志 协议下,若进程q在将消息叫和m2的必要信息保存至日志文件之前于"X"处发生故障。进 程q发生故障后,进程P、q和r必须重新启动以重新发送和接收叫和m2。显然,进程q重 放(replay)消息的次序应为叫、!!!;;,然而由于信道延时tpq和tq不是固定常数,若tpq>trq贝1J 进程q接收消息的次序可能变为m2、mi。图1的实例说明,尽管乐观消息日志协议要求故障 进程在重演时准确发送、接收未保存至日志文件的消息,但在某些情况下(例,进程信道延 时变化,系统中的进程重新启动时间参差不齐等)实际进程收发消息的次序可能与故障前 不一致。然而每次重复执行,系统的最终结果应该是一致的,这说明在PWD假设下系统的执 行结果与某些消息的接收次序无关。
[0021] 总是在先发生关系(alwayshappenbefore)关系:
[0022] 假设进程的信道为FIFO可靠信道,edPe,分别表示消息mJPm,的发送或接收事 件。如果在系统任何一次执行中ei的发生总是先于e]的发生而与信道的延时、cpu的速度
[0023] 在图2中,ROV、R(m2)、R(m3)和R(m4)分别表示消息m!、m2、m3和m4的接收事件, SOi^SOi^SO^)和S(m4)分别表示消息叫為馬和m4的发送事件。在分段确定(PWD)假
ROiO总是在先发生于R(m3)表明R(m3)逻辑上依赖于R(mi),R(m3)和R(mi)之间的关系 是一种逻辑依赖关系与系统的其他因素无关。由于消息的接收事件是确定性事件,因此
[0024] 图2中由于叫和~的发送经过不同的信道延时到达进程q,因此R(m3)不一定 总是在先发生于R(m4)。若事件ei的发生不一定总是先于事件e,的发生,而是与信道
因此进程q实际的消息接收序列为ml、m3、m4或ml、m4、m3。
[0025] 消息等效序列定理:
[0026] 假设S是进程p的一消息序列,S'是一将S中的消息重新排列后形成的新序列。 S'中的元素满足:1、所有存在于S中的消息在S'中仍然存在;2、若某些消息的接收事件在 S中具有总是在先发生关系,则这种关系在S'中仍然保持。在进程信道FIFO和可靠信道假 设下,S和S'在进程p重放过程中是等效序列(进程分别接收两个序列后所完成的计算相 同)。
[0027] 证明:在定理假设条件下,尽管S中的某些消息在S'中进行了重新排序,但是这 些消息间的总是在先发生关系在S'中维持不变;因此S'中消息的接收次序是进程重演 (replay)中可能出现的实际次序。若S和S'在进程p重放过程中不是等效序列,则S中的 消息接收事件在进程P的执行与S'中的消息接收事件在进程p的执行不等效,即同一个进 程的每次执行是不一致的,这与进程执行的一致性属性相矛盾。
[0028] 例在图2中,ml、m3和m4与ml、m4和m3是等效序列,即进程p重演(replay)ml、 m3和m4与重演ml、m4和m3后进程所完成的计算是相同的。
[0029] 改善的逻辑时钟:
[0030] 进程p改善的逻辑时钟LCp是一个整型变量,用于对消息的发送事件和接收事件 计数。LCp满足:
[0031] 1、其初值是零;
[0032] 2、每发送一个消息,LCp加一;
[0033]3、每接收到进程q-个消息,LCp-max(LCp+1,LCq+Ι),其中LCp和LCq分别表示 进程P
[0034] 和q的逻辑时钟,max表示取LCp+1和LCq+1中的最大值。
[0035] 如图3所示,p发送叫后LCp= 1,发送1114后LCp= 2。q接收且保存心
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1