CN101986602B - 基于报文数目检验无阻塞检查点设置和故障进程恢复方法 - Google Patents

基于报文数目检验无阻塞检查点设置和故障进程恢复方法 Download PDF

Info

Publication number
CN101986602B
CN101986602B CN2010102509770A CN201010250977A CN101986602B CN 101986602 B CN101986602 B CN 101986602B CN 2010102509770 A CN2010102509770 A CN 2010102509770A CN 201010250977 A CN201010250977 A CN 201010250977A CN 101986602 B CN101986602 B CN 101986602B
Authority
CN
China
Prior art keywords
message
over
change step
checkpoint
judge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2010102509770A
Other languages
English (en)
Other versions
CN101986602A (zh
Inventor
高胜法
左凤艳
石传青
刘冬波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN2010102509770A priority Critical patent/CN101986602B/zh
Publication of CN101986602A publication Critical patent/CN101986602A/zh
Application granted granted Critical
Publication of CN101986602B publication Critical patent/CN101986602B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Retry When Errors Occur (AREA)

Abstract

本发明公开了一种基于报文数目检验无阻塞检查点设置和故障进程恢复方法,它解决了以往分布式系统检查点建立过程中控制信息开销过大和故障进程由于回滚计算损失过大问题。针对分布式系统检查点的建立过程中控制报文数目过多和进程阻塞问题,本发明以报文数目的定量分析判断代替以往研究中的基于因果关系的定性分析判断,提供一种基于分布式系统扩展模型和报文数目检验无阻塞同步检查点设置和崩溃进程恢复方法,真正实现所有进程在检查点设置过程中无阻塞运行,真正实现某进程崩溃时,仅仅该崩溃进程回退恢复的系统最小回卷,达到了提高分布式系统性能的目的。

Description

基于报文数目检验无阻塞检查点设置和故障进程恢复方法
技术领域
本发明涉及基于报文数目检验无阻塞检查点设置和故障进程恢复方法。
背景技术
逻辑上分布式系统可视为由若干个既各自独立又进行复杂交互的进程组成,此类进程通过报文交换完成进程间的通信进而实现系统资源的共享,相互协作共同完成一个任务。分布式系统的常见故障主要有:故障性故障、遗漏性故障和时序故障、响应故障和随意性故障等。故障处理方法有基于硬件和软件的两种方案,软件方案主要有主动复制和被动复制。被动复制可采用前向恢复和后向恢复两种方法:前向恢复是假定可准确得到故障的性质并可排除此类故障从而使系统继续向前执行,前向恢复系统运行效率高但通常很难实现;后向恢复适用于系统故障无法预知和排除的情况,因此需定时存储系统的状态,一旦出现故障系统可恢复到先前状态执行。
后向恢复主要有同步检查点、异步检查点和消息日志方法。一般而言,同步检查点方法可靠性高,主要缺点是由于同步等待时间的存在致使系统性能下降。绝大多数同步检查点方法的研究主要集中在两方面,一是减少检查点的数目和同步报文数目算法的研究,一是检查点设置过程中所有进程均无阻塞运行算法的研究。由G.Cao和M.Singhal在IEEE Trans.Parallel Distributed System 9(12)(1998a):1213-1225发表的题为《On coordinatedcheckpointing in distributed systems》文章中提出了Prakash-Singhal算法,该算法首次将减少检查点的数目和同步报文数目算法及检查点设置过程中所有进程均无阻塞运行算法的研究集于一体,推出了min-process and non-blocking检查点算法,遗憾的是由G.Cao和M.Singhal在Proc.27th Internat.Conf.on Parallel Processing,IEEE Press,NewYork,1998b,pp.37-44发表的题为《On the impossibility of min-process non-blockingcheckpointing and an eFcient checkpointing algorithm for mobile computing systems》文章中,证明了此算法所设置检查点不满足一致性要求;Guohong Cao在TheoreticalComputer Science,Volume 290,January 2003,Pages:1127-1148发表的题为《Checkpointing with mutable checkpoints》的文章通过引入可变检查点(mutablecheckpoint)解决了检查点设置过程中检查点数目雪崩增加问题,实现了较少数量的进程无阻塞地设置永久检查点。此类算法为达成检查点的一致性,需追踪报文收发因果关系以满足全局状态的一致性要求,从而使得进程的控制报文数目大大增加,不仅占用了系统通信资源而且占用了较多cpu运行时间,极大降低了系统的性能。在检查点设置过程中,现存大部分同步检查点算法其所有进程均停止正常任务的执行(阻塞),转而执行检查点算法。由于检查点建立过程中控制报文的传送总存在一定的网络延时,若此段时间进程阻塞势必降低系统的性能,因此若能使得进程无阻塞运行必能大大提高系统运行效率。
通常同步或异步检查点算法在系统某进程出现故障时,所有进程均回退至先前保存的检查点重新执行,由此造成的损失为回退所造成的重复计算。如何把回退造成的损失减少到最小是本发明欲实现的又一目标。
发明内容
本发明的目的就是针对分布式系统检查点的建立过程中的控制报文数目过多和进程阻塞问题,以报文数目的定量分析判断代替以往研究中的基于因果关系的定性分析判断,提供一种基于分布式系统扩展模型和报文数目检验无阻塞检查点设置和故障进程恢复方法,真正实现所有进程在检查点设置过程中无阻塞运行,真正实现某进程故障时仅仅故障进程回退恢复的系统最小回卷,达到提高分布式系统性能的目的。
为实现上述目的,本发明采用如下技术方案:
一种基于报文数目检验无阻塞检查点设置和故障进程恢复方法,它的步骤为:
(1)协调进程Pc定期向所有普通进程发出检查点设置报文NB;
(2)初始化所有普通进程;
(3)判断普通进程间是否向对方发送数据报文或接收对方的数据报文,如果是,则处理数据报文,保存数据报文信息至内存变量和磁盘,然后转入步骤(3)继续判断;如果否,则转入步骤(4);
(4)判断任一普通进程是否收到Pc的NB报文;如果是,则保存检查点和内存变量至磁盘,然后转入步骤(3)继续判断;如果否,则转入步骤(5);
(5)检测所有普通进程,如果其中任何一个普通进程发生故障,则转入步骤(6),其它所有未发生故障的普通进程转入步骤(7);如果所有普通进程均未发生故障,则转入步骤(7);
(6)恢复发生故障的进程,恢复完成后转入步骤(3)继续判断;
(7)所有未发生故障的普通进程,如果收到故障进程的重建报文XB,则进行相应的处理;反之则转入步骤(3)继续判断。
将发生故障的普通进程标记为Pi,i=1,2,3…n,未发生故障的普通进程标记为Pj,j≠i,j=1,2,…n,所述步骤(6)中恢复Pi过程如下:
Step1:Pi回退至发生故障时的前一个周期所对应的检查点,将保存在磁盘中的信道信息取至进程内存变量;
Step2:Pi发送重建报文XB至所有未发生故障的普通进程;
Step3:根据Pi的信道输入状态数组从磁盘读取并处理当前检查点周期接收到的数据报文,重建进程改进的向量时钟Ti
Step4:根据Pi的信道输出状态数组从磁盘读取并处理当前检查点周期发送的数据报文,重建进程发送向量Ui
Step5:判断Pi是否接收到未发生故障的普通进程Pj的信息报文RB;如果是,则将RB所携带Uji存入Pi的Uji,并转入步骤step6;如果否,则直接转入步骤step6;其中,Uji表示Pj发送至Pi的报文数目;
Step6:判断Pi是否收到所有未发生故障的普通进程的信息报文RB;如果是,则求得所有差值Uji-Tij,j≠i,j=1,2,…n,并转入步骤step7;如果否,则返回步骤step5;其中,Tij表示Pi所接收到的Pj发送的报文数目;
Step7:对于j≠i,j=1,2,…n,判断是否存在大于0的差值,如果存在,则Pi发送数据请求报文RE并传送此差值到相应的Pj,并转入步骤step8;反之,转入步骤step9;
Step8:判断Pi是否接收到Pj的中途数据报文;如果是,则Tij加一,保存数据报文信息至内存变量和磁盘,然后转入步骤step7;如果否,则转入step8继续判断;
Step9:发送结束报文EB至所有未发生故障的普通进程,完成Pi的恢复。
所述步骤(7)中进行相应处理的步骤如下:
A.停止向所有普通进程发送数据报文,并传送发送向量分量Uji至故障进程Pi
B.判断Pj是否收到故障进程Pi的数据请求报文RE,如果是则取得差值Uji-Tij,根据差值查找中途报文,发送中途报文至Pi,如果否,则直接转入步骤C;
C.判断Pj是否接收到数据报文;如果是,则保存内存变量至磁盘并转入步骤D,否则直接转入步骤D;
D.判断Pj是否收到故障进程Pi的结束报文EB,如果是则Pj继续向Pi发送报文,如果否则转入步骤B。
本发明的原理如下:
分布式系统有限状态机扩展模型:
一个系统被定义为一组元素的集合,为了实现某些目标这些元素以特定规则相互作用和相互关联而集合在一起,从分布式应用和资源共享的角度,分布式系统可定义为若干个进程的集合。
分布式系统有限状态机扩展模型是由有限个进程组成的集合:
P={P1,P2,…Pn},Pi表示进程,i=1,2,3…n;n≥2。
Pi={I,O,SP,Q,F},其中:
a.I=Ein×Eout是分布式系统进程输入事件集合,为内部输入事件集Ein与外部输入事件集Eout的笛卡积;
其中,Ein={eik|k=1,2…m},eik为分布式系统的内部输入事件;i表示输入事件,k为内部输入事件序号,m为自然数。Eout={eok|k=1,2…n},eok为分布式系统的外部输入事件;o表示输出事件,k为外部输入事件序号,n为自然数。
b.O=Oin×Oout是分布式系统进程输出事件的集合,为对内输出事件集Oin与对外输出事件集Oout的笛卡积,其中,Oin={oik|k=1,2…l},oik为分布式系统的对内输出事件;i表示对内输出,k为对内输出事件序号。Oout={ook|k=1,2…w},ook为分布式系统的对外输出事件;下标o表示对外输出,k为对外输出事件序号。
c.SP=S×K×M×T×U是分布式系统进程状态的集合,为进程内部状态集S、信道输入状态集K、信道输出状态集M、改进的向量逻辑时钟集T和发送向量集U的笛卡积;其中,
S={Sm|m=1,2,…k}为进程内部状态集合,Sm是进程的内部状态,内部状态记忆了内部输入事件,m表示内部状态序号,k为自然数。
K={Kt|t=1,2…r}为信道输入状态集合,Kt是信道的输入状态,其记忆了信道所接收报文的信息,t表示信道输入状态序号,r为自然数。Kt可进一步描述为:Kt={Ktk|k=1,2,…w},Ktk={Ftk,Btk};Ktk表示进程所发送某份报文的信息,Ftk为发送此报文进程的标识,Btk是报文的标识,Ftk和Btk均来自于其他报文发送进程,t表示信道输入状态序号,k为进程所接收报文序号,w为自然数。
M={Mw|w=1,2…l}为信道输出状态集合,Mw是信道的输出状态其记忆了信道所发送报文的信息,w为信道输出状态序号,l为自然数。Mw可进一步描述为:Mw={{Fwk,Bwk}|k=1,2,…z,其中{Fwk,Bwk}表示进程所发送某份报文的信息,Fwk是发送进程的标识,Bwk是报文的标识;w为信道输出状态序号,k表示发送报文序号,z为自然数。
T={Ti(k)|k=1,2…l}为进程Pi信道改进的向量逻辑时钟集合,Ti(k)是进程Pi信道的向量逻辑时钟,k表示进程的状态时间变量,l为自然数,i表示进程Pi的序号。
Ti(k)=(Ti1(k),Ti2(k)…Tin(k))
其中Tii(k)表示进程Pi在当前信道状态时间k内发送报文的数目,其初值是零,每发送一份报文其值加一;Tij(k)(i≠j,j=1,2…n)表示进程Pi在当前信道状态时间内所接收的进程Pj的报文的数目;i为进程Pi的序号,j为进程Pj的序号,k是进程状态时间变量。
U={Ui (k)|k=1,2…w}为进程Pi的发送向量集合,Ui (k)为进程Pi的发送向量,k是进程状态时间变量,i为进程Pi序号,k为进程Pi发送向量序号,w为自然数。
Ui (k)=(Ui1 (k),Ui2 (k)…Uin (k))
其中,若i≠j,则Uij (k)为进程Pi发送至进程Pj的报文数目;若i=j,则Uij (k)=0;i表示进程Pi的序号,j表示进程Pj的序号,k为进程状态时间变量。
d.Q=I×SP->O,是进程的输出函数,
e.F=I×SP->SP,是进程状态转移函数。
全局一致性状态及丢失报文之进程判定:设分布式系统的进程为:p1、p2、p3、…pn,与其对应的向量时钟为:T1 (k)、T2 (k)、T3 (k)…Tn (k)
T = T 1 ( k ) T 2 ( k ) T 3 ( k ) . . . T n ( k ) = T 11 ( k ) T 12 ( k ) . . . T 1 n ( k ) T 21 ( k ) T 22 ( k ) . . . T 2 n ( k ) T 31 ( k ) T 32 ( k ) . . . T 3 n ( k ) . . . T n 1 ( k ) T n 2 ( k ) . . . T nn ( k )
上式矩阵的主对角元素Tii (k)对应于进程Pi所发送报文数目,Tij (k)(i≠j)对应于进程Pi所接收Pj进程的报文数目。
若上式所对应矩阵主对角线的所有元素Tii与其对应的第i列的元素的代数和都相等,即
T ii ( k ) = Σ j = 1 i - 1 T ji ( k ) + Σ j = i + 1 n T ji ( k ) , i = 1,2 . . . n - - - ( 2 )
则所有进程所发送的每份报文必定都被接收,即此刻的分布式系统的状态是一个全局一致性状态。
因为Tii (k)表示Pi进程发送报文数目,Tji (k)(j≠i)表示进程Pj所接收Pi进程发送的报文数目,(2)式表明任一进程Pi所发送的报文都被其他进程接收;所以所有进程所发送的报文必然都被接收,此刻的分布式系统状态必然是一个全局一致性状态。
设分布式系统的进程p1、p2、p3、…pn对应的发送向量为:U1 (k)、U2 (k)、U3 (k)…Un (k)
U = U 1 ( k ) U 2 ( k ) U 3 ( k ) . . . U n ( k ) = U 11 ( k ) U 12 ( k ) . . . U 1 n ( k ) U 21 ( k ) U 22 ( k ) . . . U 2 n ( k ) U 31 ( k ) U 32 ( k ) . . . U 3 n ( k ) . . . U n 1 ( k ) U N 2 ( k ) . . . U nn ( k ) - - - ( 3 )
若Tji (k)=Uij (k)(j≠i),则进程Pj所接收Pi进程的报文数目与进程Pi发送至进程Pj的报文数目相等,即进程Pi发送至进程Pj的报文无遗漏。因为Tji (k)表示进程Pj所接收Pi进程的报文数目,Uij (k)表示进程Pi发送至进程Pj的报文数目,所以由题设条件可知结论成立。
若Tji (k)≠Uij (k),则表明Pi发送至进程Pj的报文至少有一份未被接收,且丢失报文的发送进程是Pi,接受进程是Pj。由所设条件可知,进程Pi发送至进程Pj的报文数目与Pj所接收Pi进程的报文数目不等,必然有Uij (k)>Tji (k),即Pi发送至进程Pj的报文至少有一份未被接收,由此可得丢失报文的发送进程是Pi、接收进程是Pj
上述内容参考中国专利公开号为CN101572723A的“分布式系统有限状态机扩展模型及检查点准同步方法”。
若分布式系统不存在重复报文和乱序报文,Pi为发送进程,Pj为接收进程,则进程Pi和进程Pj的局部状态中存在中途报文的充分必要条件是:
Uij(ki)>Tji(kj)
其中,ki表示Pi进程的时间值,kj表示Pj进程的时间值;Uij(ki)为Pi进程发送向量的第j个分量,Tji(kj)为进程Pj改进向量时钟的第i各分量。
(a)充分性,若Uij(ki)>Tji(kj),即Pi进程发送至Pj进程的报文数目大于Pj进程所接收Pi进程的报文数目,在满足题设条件时不可能出现中途报文和孤儿报文相互抵消的情况,则至少有一份报文的发送事件出现在Pi的局部状态中而其接收事件未出现在Pj的局部状态中,即在进程Pi和进程Pj的局部状态中存在中途报文。
(b)必要性,若在进程Pi和进程Pj的局部状态中存在中途报文,根据题设条件不可能出现中途报文和孤儿报文相互抵消的情况,则Pi发送报文数目必大于Pj接收报文的数目,即Uij(ki)>Tji(kj)。
设分布式系统由进程p1、p2…pn组成,统一时钟分布式系统全局状态函数可表示为:
GS(t)=GS(C1(t),C2(t)…Cn(t))                        (4)
其中,t为物理时间变量,Ci为进程Pi的局部状态函数,Ci可进一步表示为:
Ci(t)=Ci(Pi(t),CHi(t))
其中,Pi(t)为进程Pi的内部状态函数;CHi(t)为进程Pi信道的状态函数。
信道状态函数CHi(t)可进一步表示为信道的接收状态函数ri(t)和发送状态函数si(t)的复合函数:
CHi(t)=CHi(ri(t),si(t))
接收状态函数ri(t)记忆了进程所接收报文信息,发送函数si(t)记忆了进程所发送报文信息。(4)式表明任一时刻的所有进程的状态函数构成了此刻系统全局状态函数。
统一时钟分布式系统的全局状态表示为:
GS(k)=GS(C1(k),C2(k)…Cn(k))
其中k表示时间值,GS(k)表示t=k时分布式系统的全局状态。
设分布式系统由进程p1、p2…pn组成,非统一时钟分布式系统全局状态函数表示为:
GS(t1,t2…tn)=GS(C1(P1(t1),CH1(t1)),C2(P2(t2),CH2(t2))…Cn(Pn(t2),CHn(tn)))
其中,Pi(ti)为进程Pi的内部状态函数;CHi(ti)为进程Pi的信道状态函数,Ci(ti)表示进程Pi的局部进程状态函数,i=1,2,..n。ti为进程Pi的时钟时间变量,ti=t-Δti,t为物理时间变量。
非统一时钟分布式系统的全局状态表示为
GS(k1,k2,…kn)=GS(C1(k1),C2(k2)…Cn(kn))
其中ki表示ti=ki的时钟时间值,GS(k1,k2,…kn)表示了不同时刻的进程状态所组成的分布式系统的全局状态。
若分布式系统不存在重复报文和乱序报文,进程的信道为可靠信道,且满足以下条件,则分布式系统全局状态GS(k1,k2…kn)是一个全局一致性状态。
∀ i , i ∈ { 1 , 2 . . . n } ∀ j , j ∈ { 1,2 . . . n } i ≠ j U ij ( ki ) = T ji ( kj ) - - - ( 5 )
因为系统中不存在重复报文和乱序报文,故不可能出现中途报文数目与孤儿报文数目相互抵消的情况。由于对于任意两个进程Pi和Pj总有Uij (ki)=Tji (kj)和Uji (kj)=Tij (ki),即对于任意进程Pi和Pj,Pi进程在t=ki时刻及t=ki之前发送至Pj进程的报文在t=kj时已被Pj接收,Pj进程在t=kj时刻及t=kj时刻之前发送至Pi进程的报文在t=ki时已被Pi接收,因此任意进程Pi在ki时刻及之前所发送的报文必然被其它进程Pj在kj(j≠i,j=1,2…n)时刻及之前接收,即分布式系统全局状态GS(k1,k2…kn)必然是一个全局一致性状态。
若分布式系统进程的信道为可靠信道(不存在重复报文和乱序报文),Pi为发送进程,Pj为接收进程,则进程Pi和进程Pj的局部状态中存在中途报文的充分必要条件是:
Uij(ki)>Tji(kj)                                (6)
其中,Uij(ki)为Pi进程发送向量的第j个分量,Tji(ki)为进程Pj改进向量时钟的第i各分量。
(a)充分性,若Uij(ki)>Tji(kj),即Pi进程发送至Pj进程的报文数目大于Pj进程所接收Pi进程的报文数目,在满足题设条件时不可能出现中途报文和孤儿报文相互抵消的情况,则至少有一份报文的发送事件出现在Pi的局部状态中而其接收事件未出现在Pj的局部状态中,即在进程Pi和进程Pj的局部状态中存在中途报文。
(b)必要性,若在进程Pi和进程Pj的局部状态中存在中途报文,根据题设条件不可能出现中途报文和孤儿报文相互抵消的情况,则Pi发送报文数目必大于Pj接收报文的数目,即Uij(ki)>Tji(kj)。
报文数目检验无阻塞检查点方法原理:
报文数目检验无阻塞检查点方法(message number checking and nonblocking,)旨在以报文数目的定量分析判断代替以往研究中的基于因果关系的定性分析判断,以达到优化算法、减少控制报文数目提高算法性能的目的。根据(5)式可知,任何一个分布式系统状态只要满足(5)式,此系统状态必然是一个一致的全局状态。
报文数目检验无阻塞检查点算法在检查点设置阶段只是简单地保存检查点并不考虑检查点的一致性,而在故障进程回退恢复过程中根据进程发送和接收数据报文的数目(Uij和Tji)使得全局状态达成一致。
报文数目校验无阻塞检查点方法对应算法中包含普通进程和协调进程。算法的执行包括三个阶段,正常执行阶段、检查点设置阶段和故障进程回卷恢复阶段。
在正常执行阶段,普通进程在任何时刻均无阻塞执行,每发送和接收一份数据报文其信息总是保存在信道输入状态数组instatus和信道输出状态数组outstatus以及Ti和Ui向量中,instatus和outstatus以及Ti和Ui向量随之存入磁盘。
在检查点设置阶段,普通进程在任何时刻均无阻塞执行。协调进程发出保存检查点通知报文至普通进程,普通进程接到协调进程保存检查点的通知报文后,保存永久检查点而后继续执行其他计算。协调进程和普通进程对于所存检查点的一致性在检查点设置阶段不作任何处理。
在故障进程回卷恢复阶段,发生故障进程回卷至csn-1周期所存的检查点(csn为检查点序号),恢复csn-1周期所存的进程内部状态和信道状态。然后从磁盘存储中恢复进程故障前所存的instatus和outstatus数组以及Ti和Ui向量。继而根据instatus从磁盘读取csn周期(进程发生故障的检查点周期)接收的数据报文并处理之。对于故障进程回卷时非故障进程发送至故障进程的中途数据报文(此类报文由于故障进程回卷未被接收),由故障进程和非故障进程根据(5)式协商恢复。未发生故障进程,由于其进程和信道状态未被破坏,故不回卷。为保证故障进程恢复后系统全局状态的一致性,未发生故障进程在故障进程恢复阶段停止发送数据报文直到故障进程恢复处理阶段结束为止。
检查点方法的数据存储结构:
算法由协调进程负责检查点建立过程的控制,各普通进程分别对其外部输入事件和对外输出事件计数并存储至向量逻辑时钟Ti (k)、发送向量Ui (k)、信道输入状态数组instatus和信道输出状态数组outstatus。
信道输入状态数组instatus(如图4所示)每个元素由pid、mid、csn和file_num四个域组成,pid、mid、csn和file_num均为自然数;其中pid表示发送进程的标识,mid表示数据报文的标识,csn为检查点序列号,每保存一次检查点csn的值加一,file_num为数据报文文件的序号。
信道输出状态数组outstatus(如图5所示)每个元素由pid、mid、csn和file_num四个域组成,pid、mid、csn和file_num均为自然数;其中pid表示发送进程的标识,mid表示数据报文的标识,csn为检查点序列号,每保存一次检查点csn的值加一,file_num为数据报文文件的序号。
控制报文类型:
1.检查点建立、更新报文NB(图8),其中,源进程标识一个字节,源进程为分布式系统中发送报文之进程,目的进程标识一个字节,目的进程为分布式系统中接收报文之进程,报文类型一个字节;其功能是启动算法,由协调进程发送至各进程。
2.重建报文XB(图9),其中,源进程标识一个字节,目的进程标识一个字节,报文类型一个字节;由故障进程发送至未故障进程,通知未故障进程进入系统恢复阶段。
3.结束报文EB(图10),结束算法,其中,源进程标识一个字节,目的进程标识一个字节,报文类型一个字节;由故障进程发送至未故障进程,通知未故障进程退出系统恢复阶段。
4.信息报文RB(图11),其中,源进程标识一个字节,目的进程标识一个字节,报文类型一个字节,发送向量分量Uji一个字节,由未故障进程发送至故障进程。
5.请求报文RE(图12),其中,源进程标识一个字节,目的进程标识一个字节,报文类型一个字节,中途报文之发送进程标识一个字节,差值diff=Uij-Tji一个字节,此报文由故障进程发送至未故障进程。
6.数据报文(图13),其中,源进程标识一个字节,目的进程标识一个字节,报文类型一个字节,报文标识mid一个字节,检查点序列号csn一个字节,数据(data)k个字节,k为自然数。
分布式系统的拓扑结构可为星型(图1)、总线型(图2)、环型(图3)和树型等。分布式系统是由普通进程P1,P2,…Pn和协调进程Pc组成,其中n为自然数;每个进程均位于系统若干个节点之一。系统进程之间的报文直接可达或间接可达。进程信道为FIFO的可靠信道。检查点设置阶段:
算法的数据报文DB由四个域组成,pid表示发送或接收进程的标识;mid表示发送或接收报文的标识;csn表示检查点序列号,csn初值为0,每保存一次检查点csn的值加一;data为报文的数据域,为简明起见本算法设其为整型数据,实际应用中可设计为适用的类型。
普通进程Pi在执行过程中每接收一份数据报文将其信息保存在instatus中,将报文数目信息保存在Ti中,将数据报文的数据部分(DB.data)以文件名input.file_num存入磁盘,file_num为数据报文文件的序号,其初值是0,每保存一次文件file_num加一。
普通进程Pi在执行过程中每发送一份数据报文将其信息保存在outstatus中,将报文数目信息保存在Ti和Ui中,将数据报文的数据部分(DB.data)以文件名output.file_num存入磁盘,file_num的含义同上。
协调进程Pc定期向普通进程发出保存检查点的通知报文NB,此后协调进程退出算法。
普通进程Pi收到NB报文后保存Ti、Ui和csn至磁盘,保存检查点。为防止数组溢出,删除csn-2检查点周期所存instatus和outstatus中的元素。
尽管算法最终保存的检查点不一定是全局一致性检查点,然而由于数据报文信息被完整保存在instatus、outstatus、Ui、Ti、input.file_num文件和output.file_num文件中并及时存入硬盘,因此任何一个进程在任何时间点故障总可以由恢复算法依据上述信息恢复故障进程的内部状态和信道状态。
无故障时普通进程数据处理:
普通进程Pi每接收一份数据报文(如图6所示)将报文的pid、mid、csn和file_num存入instatus数组,instatus数组存入磁盘,数据报文以文件名input.file_num存入磁盘,报文数目信息存入Ti向量。
普通进程Pi每发送一份数据报文(如图7所示)将报文的pid、mid、csn和file_num存入outstatus数组,outstatus数组存入磁盘,数据报文以文件名output.file_num存入磁盘,报文数目信息存入Ti和Ui向量。
故障进程回卷恢复阶段数据处理原理:
通常同步或异步检查点算法在系统某进程pi出现故障时,为避免产生中途报文和孤儿报文所有进程均需回退至先前保存的一致性检查点重新执行。然而,当进程Pi发生故障时,只有pi进程的计算出现错误,未发生故障进程的计算并未出错,所有进程的回退必然造成系统较大的计算损失并影响系统性能。若能实现故障时仅仅故障进程Pi回卷,无故障进程不回卷,则可把由于进程故障导致的系统回退所造成的计算损失减至最小。
假设Pi在t=k时发生故障且仅仅Pi回卷,其他进程不回卷,并且满足以下条件:
(a)分布式系统由进程p1、p2…pn组成,任一进程每发送和接收一份数据报文其信息(进程标识pid,报文标识mid等)均记录在Ti和Ui向量以及进程信道输出状态outstatus和信道输入状态instatus中。outstatus和instatus的内容被及时存入硬盘,每份数据报文内容亦以文件形式保存于磁盘;
(b)系统运行过程中在t=k时进程pi发生故障,而其它进程均运行于无故障状态;
(c)进程的信道为可靠FIFO信道;
则所有进程的信道信息总可以恢复至t=k时的状态。
U = U 1 ( k ) . . . U i ( k ) . . . U n ( k ) = U 11 ( k ) U 12 ( k ) . . . U 1 n ( k ) . . . U i 1 ( k ) U i 2 ( k ) . . . U in ( k ) . . . U n 1 ( k ) U n 2 ( k ) . . . U nn ( k ) T = T 1 ( k ) . . . T i ( k ) . . . T n ( k ) = T 11 ( k ) T 12 ( k ) . . . T 1 n ( k ) . . . T i 1 ( k ) T i 2 ( k ) . . . T in ( k ) . . . T n 1 ( k ) T n 2 ( k ) . . . T nn ( k ) - - - ( 7 )
由于Pi发送的数据报文已被其它进程接收并已被处理,在其它进程无故障不回卷的条件下不必考虑Pi进程发送报文的恢复,因此以下仅考虑Pi进程所接收报文的信息可被恢复。
Pi进程所接收报文信息恢复包含两方面,其一是Pi进程故障前已处理数据报文的恢复及处理,其二是Pi进程故障时Pj发送至Pi的中途报文的恢复。以下分别从这两方面对此予以证明。
1、对于Pi进程故障前已处理数据报文,由于其信息已被保存在Pi的磁盘中,因此Pi重启后总可以从磁盘所存instatus和数据报文件依次读取并处理每份所存数据报文,并将每份报文的数目信息记录在Ti向量对应分量Tij(j≠i,j=1,2…n)中,由此即可实现对故障前已处理数据报文的恢复。
2、对于Pi进程故障时Pj发送至Pi的中途报文,在假设条件下,分布式系统的T和U矩阵中的第i行信息必然丢失而其它行的信息必然得以保存。根据公式(7),由于Pi故障后重启,Ui(k)和Ti(k)所存信息必然丢失;而Pj(j≠i,j=1,2…n)未发生故障,Tj(k)和Uj(k)所存信息必然未丢失。根据公式(6),若存在中途报文必有Uji>Tij,差值Uji-Tij就是中途报文数目。由于Uji保存在未发生故障进程Pj的Uj向量中,Tij在Pi重启后已部分恢复,因此依据差值Uji-Tij控制Pj进程重发丢失的中途报文,Pi进程接收后重新处理之,由此所丢失Pj发送至Pi的中途数据报文即可被恢复之。
综上所述,Pi信道的信息总可以被恢复至t=k时的状态,又因为未故障进程的信道信息无需恢复,所以所有进程的信道信息总可以被恢复至t=k时的状态。
本发明的有益效果是:以报文数目的定量分析判断代替以往研究中的基于因果关系的定性分析判断,提供一种基于分布式系统扩展模型和报文数目检验无阻塞同步检查点设置和故障进程恢复方法,真正实现所有进程在检查点设置过程中无阻塞运行,真正实现某进程故障时仅仅故障进程回退恢复的系统最小回卷,达到了提高分布式系统性能的目的。
附图说明
图1分布式系统型结构;
图2分布式系统总线型结构;
图3分布式系统环形结构;
图4信道输入状态;
图5信道输出状态;
图6数据报文的接收及处理;
图7数据报文的发送及处理;
图8更新报文结构;
图9重建报文结构;
图10结束报文结构;
图11信息报文结构;
图12请求报文结构;
图13数据报文结构;
图14协调进程流程图;
图15普通进程流程图;
图16分布式系统实例图;
图17分布式系统故障进程恢复实例图;
图18故障进程中途报文恢复实例图;
图19恢复故障进程实验结果图。
具体实施方式
下面结合实施例对本发明作进一步说明。
在工程科学如计算机科学中,凡是一种情况或一种活动的发生都可称作一个事件,为此将分布式系统视为事件系统,即在事件的驱动下系统发生状态迁移并产生相应的操作。
根据事件对分布式系统的影响,可将事件分为输入和输出两种类型:
1、输入事件,来自进程内部或外部输入操作所对应的事件。分布式系统的输入事件或来自于进程自身或来自于进程外部环境,如其它进程;此类事件不仅影响进程自身的状态迁移,而且有可能影响其他进程的状态变化。
输入事件按其的来源进一步分为:
(1)内部输入事件,是由于时钟的滴答所引起的进程的一条计算机指令或一段程序的执行等事件。内部输入事件源于进程所处节点计算机的系统时钟,并引起进程的内部状态迁移。显然,内部输入事件对应于外部不可见的进程内部操作和进程内部状态的迁移,是引起系统内部运动的主要因素。
(2)外部输入事件,此类事件来自于进程外部或系统的其他进程,如进程的报文发送而导致其他进程的报文接收事件。此类事件主要引起进程通信信道状态的变化。
2、输出事件,在输入事件的作用下进程状态迁移并产生的输出事件。
输出事件按其作用的对象分,可分为:
(1)对内输出事件,此类事件在进程内部状态迁移时出现且仅作用于此进程或进程所在计算机环境。如,引起变量值的更新、外设的动作等。
(2)对外输出事件,此类事件作用于其它进程,体现了进程对分布式计算环境的影响。典型的对外输出事件,如进程的报文发送事件,此类事件作为其他进程的外部输入事件直接影响其通信信道的状态。
一种基于报文数目检验无阻塞检查点设置和故障进程恢复方法,它的流程如下:
(1)协调进程Pc(如图14所示)
定期向所有普通进程发出检查点设置报文NB。
(2)普通进程Pi(如图15所示)
1.初始化;
2.若发送数据报文至Pj,则处理数据报文,保存数据报文信息至内存变量和磁盘。
a.将接收进程的标识pid存入数据报文的pid域,将数据报文索引file_num存入数据报文mid标识域。
b.将接收进程的进程标识pid、数据报文标识mid、当前检查点序列号csn和数据报文索引file_num存入信道输出状态数组outstatus,将outstatus数组以文件形式存入磁盘。
c.改进T向量的分量Tii加一:Ti[i]←Ti[i]+1。
d.发送向量U的分量Uij加一:Ui[j]←Ui[j]+1。
e.将数据报文以文件名“output.file_num”存入磁盘。
f.数据报文索引加一:file_num←file_num+1。
g.发送数据报DB至进程Pj
3.若接收到Pj的数据报文,保存数据报文信息至内存变量和磁盘。
a.将发送进程的进程标识pid、数据报文标识mid、当前检查点序列号csn和数据报文索引file_num存入信道输出状态数组instatus,将instatus数组以文件形式存入磁盘。
b.改进T向量的分量Tij加一:Ti[j]←Ti[j]+1。
c.处理数据报文的数据。
d.将数据报文以文件名“input.file_num”存入磁盘。
e.数据报文索引加一:file_num←file_num+1。
4.若接收到检查点设置报文NB,则
a.Ti、Ui和csn存入磁盘
b.保存检查点(进程内部状态)。
c.删除outstatus数组中满足outstatus.csn=csn-2的所有元素。
d.删除instatus数组中满足instatus.csn=csn-2的所有元素。
e.当前检查点序列号csn加一:csn←csn+1。
f.退出检查点设置算法,执行进程的其它计算。
5.若未检测到故障转入10。
6.若收到故障进程的重建报文NB,则
a.停止发送数据报文。
b.传送发送向量分量Uij至故障进程Pj
否则转入2。
7.若收到故障进程pi的数据请求报文RE,则
a.将RE所携带的差值(Uij-Tji)送入diff变量。
b.根据diff变量值在信道输出状态数组outstatus中找到最先发送的中途报文m,将m发送至故障进程Pi
8.若接收到Pj的数据报文,则保存数据报文信息至内存变量和磁盘。
a.将发送进程的进程标识pid、数据报文标识mid、当前检查点序列号csn和数据报文索引file_num存入信道输出状态数组instatus,将instatus数组以文件形式存入磁盘。
b.改进T向量的分量Tij加一:Ti[j]←Ti[j]+1。
c.处理数据报文的数据。
d.将数据报文以文件名“input.file_num”存入磁盘。
e.数据报文索引加一:file_num←file_num+1。
9.若收到故障进程Pi的结束报文EB则转入2,否则转入7。
10.(若检测出故障)回退至所存检查点,将保存在磁盘中的信道信息取至进程内存变量:
a.回退至所存检查点,将Pi故障前保存在磁盘中instatus和outstatus信息送入instatus和outstatus数组;保存在磁盘中Ti信息存入Ti;保存在磁盘中的Ui信息存入Ui;保存在磁盘中的检查点序列号csn信息存入csn变量。
b.检查点序列号csn加一,根据检查点序列号csn从本机磁盘中依次读取、并处理csn检查点周期中Pj发送至Pi的数据报文文件:“input.file_num”。
11.发送重建报文XB至Pj,j≠i,j=1…n。
12.根据信道输入状态数组从磁盘读取并处理当前检查点周期接收的数据报文,重建进程改进的向量时钟Ti
13.根据信道输出状态数组从磁盘读取并处理当前检查点周期发送的数据报文,重建进程发送向量Ui
14.若接收到Pj进程的信息报文RB,则将RB所携带的Uji存入Pi进程的Uji变量。
15.若未收到所有进程的信息报文RB则转入14。
16.对于j≠i,j=1,2,…n,判断是否存在大于0的差值,如果存在,则Pi发送数据请求报文RE并传送此差值到相应的Pj,并转入步骤17;反之,转入步骤18;
17.判断Pi是否接收到Pj的中途数据报文;如果是,则Tij加一,保存数据报文信息至内存变量和磁盘,然后转入步骤16;如果否,则转入17继续判断;
18.发送结束报文EB至Pj,j≠i,j=1…n,转入2。
以下以实例说明算法工作原理。如图16所示,设分布式系统由P1、P2和P3组成,在t=t1时P2进程发生故障。图16中,m1为P3发送至P2的数据报文,m2为P1发送至P3的数据报文,m3为P2发送至P1的数据报文,m4为P3发送至P2的数据报文(由于P2在t1时发生故障回卷此报文未被P2接收),m5为P1传送至P2的数据报文。算法工作过程如图17所示,由于P1和P3未发生故障故m2和m3无需恢复处理,P2重新启动后首先从本地磁盘恢复T2、U2、instatus、outstatus,向P1和P3发送重建报文XB,此后在本地存储中读取并处理m1和m5,并修改向量逻辑时间分量T21和T23。P1收到重建报文XB后,向P2发送含有U12的信息报文RB,P2收到重建报文XB后,向P2发送含有U32的信息报文RB。由于P1至P2不存在中途报文,故有U12=T21。由于P3至P2存在中途报文m4,必有U32>T23,P2求出差值(U32-T23)后向P3发送RE报文,P3接收后在本地磁盘和outstatus中查找进程标识pid=2的数据报文,找到后重发数据报文m4。P2接收后,T21=U12和T23=U32条件满足,故向P1和P3发出结束报文EB,P1和P3接收后退出恢复阶段,P2亦退出恢复阶段,至此系统重新开始运行。
发生故障进程的恢复分为两个阶段,一是从本地存储恢复,二是由发生故障进程与未发生故障进程协商恢复丢失的中途报文(如图16中的m4)。
第一个阶段,发生故障Pi从本地存储依次读取进程未发生故障前所接收、保存的Pj(j≠i,j=1,2…n)的数据报文并处理之,处理后的数据报文数目保存在Tij中。由于Pi未故障前每接收一份数据报文总是存入本地存储,因此保存在本地存储的数据报文总可以由算法恢复之。
第二个阶段,Pi发送XB报文至Pj(j≠i,j=1…n),Pj接收后发送RB报文传送Uji至Pi。Pi接收后根据Uji>Tij条件检查故障回卷后是否有未接收的中途数据报文。
Figure BDA0000024346040000171
j≠i,Uji>Tij当Uji>Tij满足时(必存在Pj发送至Pi的中途报文未被Pi接收),Pi向Pj发送RE请求报文并传送差值Uji-Tij至Pj。Pj接收RE报文后根据差值和故障进程的pid在outstatus和本地磁盘查找丢失的中途数据报文并重新发送至故障进程。故障进程Pi发送RE报文后等待接收丢失的中途数据报文,每接收一份丢失的中途报文其Tij加一,直到所有丢失的中途报文都被接收为止。
Figure BDA0000024346040000172
j≠i,Tij=Uji,条件满足表明Pj发送至Pi的报文数目与Pi接收的Pj的报文数目相等,不存在任何中途报文,故Pi向所有进程发送结束报文EB,其他进程接收后退出恢复过程,继续其它的计算。综上所述,故障进程与发送进程存在丢失中途报文的情况下,若信道为FIFO可靠信道则总可以采用报文数目检验策略由故障进程与未发生故障进程协商恢复丢失的中途报文。
未发生故障进程接收到重建报文XB后仅仅停止当前的计算并配合故障进程恢复丢失的中途报文,接收到结束报文EB后必可由暂停处继续进行原来的计算。由于未发生故障进程的信息未被破坏,无需恢复进程的内部状态和信道状态,因此最终无故障进程总可以从暂停时间点继续原来的计算。
综上所述,在恢复算法的控制下任何进程最终均可恢复至发生故障时间点(故障进程)或暂停时间点(未发生故障进程)处执行。
如图18所示,设分布式系统由p1、p2和p3组成。p1在“x”处发生故障,p1回卷至csn-1检查点周期所存的检查点C1,1,恢复csn-1周期所存的进程内部状态和信道状态。继而恢复进程故障前所存的instatus和outstatus数组以及Ti和Ui向量,根据instatus从磁盘读取csn周期接收的数据报文并处理之,最后由两个进程协商处理p1故障时p2发送至p1的中途报文m。
算法性能:
1、检查点设置阶段
检查点的数目,MNC-Non blocking算法每个检查点周期设置检查点的数目为n,n为分布式系统含有的进程数。
控制报文数目,控制报文的数目为n,n为分布式系统含有的进程数。
算法的所有进程在检查点设置过程中均无阻塞运行。
2、恢复阶段
在仅有一个进程发生故障的情况下,实现了故障进程的单独回滚,将由于进程发生故障所造成的损失减少到了最小。故障进程恢复过程中的控制报文数目约为3*(n-1)+k,其中n为分布式系统的进程数,k为Pi进程故障时其它进程发送至Pi的中途报文数目。
此算法不适用于多个进程同时故障时的情况。由于多个进程同时故障出现的概率较小,因此该算法对小概率事件未予以考虑。事实上,由于进程故障或回滚时信道的信息已被保存在硬盘,因此若多个进程同时故障,系统所有进程的状态或从硬盘、或通过进程协商从其它进程总可被恢复至故障或回滚前的状态。
实验结果
SPIN(Simple Promela Interpreter)是一个基于计算机科学的“形式化方法”模型检测工具,使用此工具可自动验证
Figure BDA0000024346040000181
其中M为系统的有限状态机模型,
Figure BDA0000024346040000182
为系统的某种属性。例,验证系统是否具有无死锁、最终进入(Eventual Entry)、活性(liveness)等属性。
本文使用spin工具对未发生故障进程和故障进程可恢复性进行了验证。分布式系统实例是由Pi、Pj1和Pj2组成,假设Pi故障后Pj1和Pj2各有一份中途报文未被Pi接收。设Pi的向量时钟和发送向量分别为T1和U1,Pj1的向量时钟和发送向量分别为T2和U2,Pj2的向量时钟和发送向量分别为T3和U3。如图19所示,故障进程Pi重启后首先处理本地存储中的数据报文,并重建Ti=[0,0,0](该向量中的分量T12=0,T13=0)。之后,Pi发送重建报文
Figure BDA0000024346040000183
至Pj1和Pj2,Pji和Pj2接收后发送信息报文
Figure BDA0000024346040000184
至Pi。Pi接收后求得U21-T12=1和U31-T13=1,表明Pj1发送至Pi的一份报文未被接收以及Pj2发送至Pi的一份报文未被接收。由于U21>T12,U31>T13
Figure BDA0000024346040000185
j≠i,Uji>Tij条件满足,故Pi发送信息报文
Figure BDA0000024346040000186
分别至Pj1和Pj2。Pj1和Pj2接收后分别发送数据报文
Figure BDA0000024346040000187
至Pi。Pi接收后,Tj1←Tj1+1,Tj2←Tj2+1,
Figure BDA0000024346040000188
j≠i,Uji=Tij条件满足,Pi分别发送结束报文
Figure BDA0000024346040000189
至Pj1和Pj2,之后Pi、Pj1和Pj2分别退出恢复阶段执行正常计算。
一般而言,衡量一个检查点算法优劣的标准与实际的算法应用场合有关。在移动计算应用中,由于站点(mobile hosts)能量限制往往将控制报文数目和检查点数目作为主要指标,以求减少信息传送量使得站点具有尽可能长的生命周期。在大型的分布式计算中,为了满足计算的可恢复性往往将算法的健壮性和稳定性作为主要指标,以求在某进程故障时将系统的损失减少至最小。考虑到一般分布式应用,本文采用六项指标作为衡量算法优劣的标准:
1、永久检查点的数目,由于永久检查点被保存在文件服务器中的稳固存储器(stablestorage)中,故检查点的数目占用系统较大的通信开销。
2、控制报文开销,定义为控制报文数目与传送一份控制报文的平均时间的乘积。
3、阻塞时间,在检查点设置期间停止基本计算的时间。
4、是否分布式,检查点算法是否由某个进程统一控制。
5、回退进程数目,任何进程故障时需随同回退的进程数目。
6、算法的健壮性,任何一个进程在任何时刻故障时是否可恢复。
表1将MNC-Non Blocking报文数目检验-无阻塞算法与具有代表性的3个检查点算法进行了比较。
表1中:
Cuni:发送一份报文至其他进程的通信开销[8]。
Cbroad:广播一份报文至所有进程的通信开销。
Tdisk:保存永久检查点至稳固存储器的时延。
Tdata:传送永久检查点至稳固存储器的时延。
Tmsg:检查点期间处理控制报文所占用时间。
Tch:设置检查点占用时间。
Tch=Tmsg+Tdata+Tdisk
Nmin,需设置检查点的最少进程数。
N,分布式系统所有进程的数目。
Ndep[6],为进程所依赖的平均进程数,1≤Ndep≤N-1。
从表1可知与其它检查点算法比较,MNC-Non Blocking报文数目检验-无阻塞算法其检查点数量为N,多于其他检查点算法所设置检查点数量,这主要是基于分布式系统进程的状态是由进程内部状态和信道状态组成的考量。控制报文的数目最少的为MNC-Non Blocking,其次为Koo-toueg算法。阻塞时间最少的为MNC-Non Blocking、Non-blocking和Elnozahy。对于是否分布式这一指标,MNC-Non Blocking算法的为集中式,但是由于控制报数目只有n不可能造成报文收发瓶颈。某进程故障时回退进程数目,Koo-toueg算法与故障进程相关联的进程需回退,MNC-Non Blocking算法仅仅故障进程回退,其他进程回退进程数目未知,此项指标MNC-Non Blocking算法优于其它算法。健壮性,MNC-Non Blocking算法当任何一个进程在任何一个时间点故障时均可通过核实收发数据报文数目恢复之,此项指标MNC-Non Blocking算法优于其它算法。
总之,MNC-Non Blocking算法在六项指标中除检查点数目一项指标外其它五项性能指标或优于或与其它算法性能指标持平,充分体现了采用系统状态一致性定量判断较之传统的基于因果关系系统状态一致性定性判断的优越性。
表1
Figure BDA0000024346040000201

Claims (3)

1.一种基于报文数目检验无阻塞检查点设置和故障进程恢复方法,其特征是,它的步骤为:
(1)协调进程Pc定期向所有普通进程发出检查点设置报文NB;
(2)初始化所有普通进程;
(3)判断普通进程间是否向对方发送数据报文或接收对方的数据报文,如果是,则处理数据报文,保存数据报文信息至内存变量和磁盘,然后转入步骤(3)继续判断;如果否,则转入步骤(4);
(4)判断任一普通进程是否收到Pc的NB报文;如果是,则保存检查点和内存变量至磁盘,然后转入步骤(3)继续判断;如果否,则转入步骤(5);
(5)检测所有普通进程,如果其中任何一个普通进程发生故障,则转入步骤(6),其它所有未发生故障的普通进程转入步骤(7);如果所有普通进程均未发生故障,则转入步骤(7);
(6)恢复发生故障的进程,恢复完成后转入步骤(3)继续判断;
(7)所有未发生故障的普通进程,如果收到故障进程的重建报文XB,则进行相应的处理;反之则转入步骤(3)继续判断。
2.如权利要求1所述的基于报文数目检验无阻塞检查点设置和故障进程恢复方法,将发生故障的普通进程标记为Pi,i=1,2,3…n,未发生故障的普通进程标记为Pj,j≠i,j=1,2,…n,其特征是,所述步骤(6)中恢复Pi过程如下:
Step1:Pi回退至发生故障时的前一个周期所对应的检查点,将保存在磁盘中的信道信息取至进程内存变量;
Step2:Pi发送重建报文XB至所有未发生故障的普通进程;
Step3:根据Pi的信道输入状态数组从磁盘读取并处理当前检查点周期接收到的数据报文,重建进程改进的向量时钟Ti
Step4:根据Pi的信道输出状态数组从磁盘读取并处理当前检查点周期发送的数据报文,重建进程发送向量Ui
Step5:判断Pi是否接收到未发生故障的普通进程Pj的信息报文RB;如果是,则将RB所携带Uji存入Pi的Uji,并转入步骤step6;如果否,则直接转入步骤step6;其中,Uji表示Pj发送至Pi的报文数目;
Step6:判断Pi是否收到所有未发生故障的普通进程的信息报文RB;如果是,则求得所有差值Uji-Tij,j≠i,j=1,2,…n,并转入步骤step7;
如果否,则返回步骤step5;其中,Tij表示Pi所接收到的Pj发送的报文数目;
Step7:对于j≠i,j=1,2,…n,判断是否存在大于0的差值,如果存在,则Pi发送数据请求报文RE并传送此差值到相应的Pj,并转入步骤step8;反之,转入步骤step9;
Step8:判断Pi是否接收到Pj的中途数据报文;如果是,则Tij加一,保存数据报文信息至内存变量和磁盘,然后转入步骤step7;如果否,则转入step8继续判断;
Step9:发送结束报文EB至所有未发生故障的普通进程,完成Pi的恢复。
3.如权利要求1所述的基于报文数目检验无阻塞检查点设置和故障进程恢复方法,未发生故障的普通进程记为Pj,其特征是,所述步骤(7)中进行相应处理的步骤如下:
A.停止向所有普通进程发送数据报文,并传送发送向量分量Uji至发生故障的普通进程Pi
B.判断Pj是否收到发生故障的普通进程Pi的数据请求报文RE,如果是则取得差值Uji-Tij,根据差值查找中途报文,发送中途报文至Pi,如果否,则直接转入步骤C;
C.判断Pj是否接收到数据报文;如果是,则保存内存变量至磁盘并转入步骤D,否则直接转入步骤D;
D.判断Pj是否收到发生故障的普通进程Pi的结束报文EB,如果是则Pj继续向Pi发送数据报文,如果否则转入步骤B。
CN2010102509770A 2010-08-11 2010-08-11 基于报文数目检验无阻塞检查点设置和故障进程恢复方法 Expired - Fee Related CN101986602B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102509770A CN101986602B (zh) 2010-08-11 2010-08-11 基于报文数目检验无阻塞检查点设置和故障进程恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010102509770A CN101986602B (zh) 2010-08-11 2010-08-11 基于报文数目检验无阻塞检查点设置和故障进程恢复方法

Publications (2)

Publication Number Publication Date
CN101986602A CN101986602A (zh) 2011-03-16
CN101986602B true CN101986602B (zh) 2012-08-15

Family

ID=43710907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102509770A Expired - Fee Related CN101986602B (zh) 2010-08-11 2010-08-11 基于报文数目检验无阻塞检查点设置和故障进程恢复方法

Country Status (1)

Country Link
CN (1) CN101986602B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102263671A (zh) * 2011-09-08 2011-11-30 曙光信息产业股份有限公司 基于检查点的故障排除方法和装置
CN104516778B (zh) * 2014-12-24 2017-09-01 西安电子科技大学 一种多任务环境下进程检查点的保存与恢复系统及方法
CN108549553B (zh) * 2018-03-29 2022-04-05 深圳市彬讯科技有限公司 一种基于三维模型云制作的3ds Max进程守护方法与装置
CN115757006B (zh) * 2022-09-27 2023-08-08 郑州云智信安安全技术有限公司 基于端口队列特征判断进程运行状态的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5968168A (en) * 1996-06-07 1999-10-19 Kabushiki Kaisha Toshiba Scheduler reducing cache failures after check points in a computer system having check-point restart function
CN1505369A (zh) * 2002-12-03 2004-06-16 深圳市中兴通讯股份有限公司 一种利用文件传输实现异构平台数据同步的方法
CN1838587A (zh) * 2006-04-26 2006-09-27 南京大学 基于进程关联的文件传输监控方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5968168A (en) * 1996-06-07 1999-10-19 Kabushiki Kaisha Toshiba Scheduler reducing cache failures after check points in a computer system having check-point restart function
CN1505369A (zh) * 2002-12-03 2004-06-16 深圳市中兴通讯股份有限公司 一种利用文件传输实现异构平台数据同步的方法
CN1838587A (zh) * 2006-04-26 2006-09-27 南京大学 基于进程关联的文件传输监控方法

Also Published As

Publication number Publication date
CN101986602A (zh) 2011-03-16

Similar Documents

Publication Publication Date Title
CN112313916B (zh) 一种融合区块链技术拟态存储防篡改日志的方法及系统
CN106406896B (zh) 一种并行PipeLine技术的区块链建块方法
CN105959151A (zh) 一种高可用的流式处理系统及方法
CN103763155A (zh) 分布式云存储系统多服务心跳监测方法
EP3000048A2 (en) System and method for creating highly scalable high availability cluster in a massively parallel processing cluster of machines in a network
CN101986602B (zh) 基于报文数目检验无阻塞检查点设置和故障进程恢复方法
Meneses et al. Evaluation of simple causal message logging for large-scale fault tolerant HPC systems
Perumalla et al. Virtual time synchronization over unreliable network transport
CN105242979B (zh) 一种具有前向恢复特征的后向恢复容错方法
CN105556898A (zh) 管理数据馈送
CN102841840B (zh) 基于消息重排序和消息数目检验的消息日志恢复方法
Biswas et al. Mobility based checkpointing and trust based recovery in MANET
Ye et al. A method of repairing single node failure in the distributed storage system based on the regenerating-code and a hybrid genetic algorithm
Cao et al. Checkpointing in hybrid distributed systems
CN104516790B (zh) 一种分布式环境下检查点记录和恢复的系统及方法
CN101572723B (zh) 分布式系统有限状态机扩展模型及检查点准同步方法
Wang et al. An optimal solution for byzantine agreement under a hierarchical cluster-oriented mobile ad hoc network
Guerraoui et al. Right on time distributed shared memory
Benkaouha et al. 2PACA: Two Phases Algorithm of Checkpointing for Ad hoc mobile networks
Awerbuch et al. Maintaining database consistency in peer to peer networks
Ye et al. An application-level failure detection algorithm based on a robust and efficient torus-tree for HPC
Hurfin et al. A multiple integrated consensus protocol based on Paxos, FastPaxos and Fast Paxos
Berns Department of Computer Science, University of Northern Iowa, Cedar Falls, IA, USA andrew. berns@ uni. edu
Fang et al. Novel broadcasting algorithm of the complete recursive network
Katti et al. Epidemic fault tolerance for extreme-scale parallel computing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120815

Termination date: 20150811

EXPY Termination of patent right or utility model