您的当前位置:首页正文

分布式系统中容错技术导论

2020-09-01 来源:易榕旅网
2004年10月第10期October󰀁2004No.10

现代情报

分布式系统中容错技术导论

刘俊丽

(齐齐哈尔大学黑河学院,齐齐哈尔164300)

󰀁摘󰀁要󰀁󰀂本文讲述的是分布计算系统出现部分失效的时候,系统应该能自动从失效中恢复过来,并且不会对整个系统的性能产生严重的影响。

󰀁关键词󰀁󰀂分布式系统;故障;失效;容错

󰀁Abstract󰀁󰀂Thearticleisaboutthefaulttolerancethatthesystemcanrecoverfromthecrashautomaticallyandwon󰀁thaveaseriousinfluenceonthefunctionofthewholesystem.

󰀁Keywords󰀁󰀂thedistributedsystem;thecrash;thefailure;thefaulttolerance

󰀁中图分类号󰀁TP392󰀁󰀂文献标识码󰀁A󰀁󰀂文章编号󰀁1008-0821(2004)10-0223-03

󰀁󰀁分布计算系统区别于单机系统的一个特点是在分布式且仅有1毫秒时间失效,那么它的可用性可达99󰀁9999%,系统中存在着部分失效的情况。当分布式系统某个部件出但是它仍然是一个高度不可靠的系统。同样地,如果一个现问题的时候就发生了部分失效。虽然部分失效对分布式系统从来不崩溃,但是在8月份中,有2个星期的假期需系统的性能有一定的影响,但同时,它应该不会影响分布要关机,这个系统是高可靠性的系统,但是它的可用性只式系统中整个应用程序的正确执行。相反,在单机系统中,有96%。

如果系统中的一个关键部件出现问题,整个应用程序就无1󰀁3󰀁安全性(safety)

法继续执行。

安全性指的是在系统出现暂时错误的情况下,不出现分布计算系统的一个重要设计目标是当系统中出现部灾难性后果的能力。例如核电厂的控制系统和宇宙飞船的分失效的时候,系统应该能自动从失效中恢复过来,并且控制系统要求具有很高的安全性。

不会对整个系统的性能产生严重的影响。故此在这里我们1󰀁4󰀁可维护性(maintainability)

讨论分布计算系统中的容错技术。

可维护性指的是系统一旦出现故障,系统易于修复的容错是计算机科学中一个重要的研究领域。首先介绍能力。高可维护性的系统意味着具有高的可用性。对于高与故障处理有关的一些基本概念和分布计算系统中的故障可维护性系统来说,要求它具有自动检测错误和自动修复模型。关于分布计算系统中容错的一些非常有用而详细的的能力。

介绍可以参见文献[JALOTE,1994]。

1󰀁5󰀁保密性(security)

1󰀁基本概念

保密性要求系统资源不被非法用户访问。

分布计算系统应该是一个可信赖的系统(dependable系统失效指的是系统不能提供它所固有的服务功能。system),容错是与可信赖系统紧密相联系的一个概念。分例如,分布式系统是为用户提供一系列服务的,但其中某布计算系统的可信赖性(dependability)包括如下几个方面一个服务或某些服务功能不能完全正确提供时,就说系统[KOPETZ,1993]:

失效了。

1󰀁1󰀁可用性(availability)

一般来说,从错误的时间特性来看,错误可分为暂时可用性反映的是系统随时可被用户使用的特性。也就性的(transient)、间歇性的(intermittent)和永久性的(per󰀁是说,在任何给定的时刻用户都可以使用此系统正确地执manent)。暂时性的错误一旦发生之后就会消失,当相关的行用户给定的任务。

操作重复执行之后,错误就消失了。间歇性的错误是一会1󰀁2󰀁可靠性(reliability)

儿出现,一会儿又消失的错误,这种错误是十分令人烦恼可靠性指的是在错误存在的情况下,系统持续服务的的一种错误,因为它十分难于诊断。永久性错误是一种持能力。尽管可靠性和可用性容易混淆,但它们并不是同一续性错误,这种错误一旦出现,将会长时间存在,直到出个概念。可靠性反映的是一段时间的特性,而可用性反映现错误的部件被修复为止。像集成芯片被烧坏、软件缺陷、的是某个时刻的特性。高可靠性系统能够持续运行一个相磁盘磁头损坏等都是永久性错误。

当长的时间而不会中断。如果一个系统,每个小时都有并

收稿日期:2004󰀁07󰀁14

作者简介:刘俊丽(1972󰀁),女,毕业于黑龙江大学计算数学及其应用软件专业,黑龙江省黑河学院计算机系讲师,从事计算机教学工作。

󰀁223󰀁󰀁

情报纵横

现代情报

2004年10月第10期October󰀁2004No.10

2󰀁基本的故障模型

一个处于故障中的系统不能胜任它所应当提供的服务。在分布式系统中,系统不能胜任它所提供的服务意味着系统中的服务员,通信信道,或者二者都不能完全胜任它们所应当具有的服务功能。在分布式系统中,错误的检测往往很困难并且很复杂。例如一个失效的服务员可能不是由这个服务员本身的故障造成的。如果一个服务员只有依赖于其他的服务员才能充分提供它所具有的服务功能,当一个服务员不能提供它所具有的某项服务或某几项服务时,错误可能是由该服务员本身造成的,也可能是由其他服务员间接引起的。分布式系统中的各部件的相互依赖性是很普遍的,例如一个硬盘错误可能会导致文件服务员不能提

󰀁

生在服务员对所收到的服务请求进行了服务,但是在发送响应报文的时候出现了故障。例如,服务员在发送响应报文时,发送缓冲区溢出,而服务员没有处理这种情况的措施。上述两种遗漏性故障属于我们通常所说的通信故障。另一种遗漏性故障与软件错误有关而与通信无关,如服务员进入死循环,或者是由于不适当的内存管理,使得服务员程序长时间被挂起。

时序故障(timingfailure)是一种与定时有关的故障。时序故障发生在服务员对请求的响应超过了特定的时间间隔,特别是在实时系统中,服务员对服务请求的响应太迟缓。

响应故障(responsefailure)是一类比较严重的故障,这类故障是指服务员对顾客的服务请求给出了不正确的响应。一般来说,响应故障分为两类。一类是响应值出现错误,即服务员给服务请求的回答信息是不正确的。例如,我们使用一个搜索引擎在Internet上搜索信息,返回的结果却与我们所给出的搜索引擎无关,这是出现了值故障(val󰀁uefailure),即服务员给出了错误的响应值。另一类响应故障时状态转换错误(statetransitionfailure),当服务员对所收到的服务请求做出了不符合期望的反应时,就会出现状态转换错误。例如,当一个服务员接收到一个它不能识别的报文,而程序中并没有确定如何处理这样的报文,这时就容易出现状态转换错误。

实际中最严重的一类错误是随意性故障(arbitraryfail󰀁ure),即我们所熟知的拜占庭故障(Byzantinefailure)。随意性故障是一种随机性的故障,在正常情况下,服务员不会出现故障,在某些不明因素的影响下,服务员偶尔会对服务请求给出错误的结果,这种错误很难被检测出来。当一个出错的服务员和其他的服务员一起协同工作时,出错的服务员会影响其他服务员而做出错误的决定。

供正常的文件服务。如果这个文件服务员是一个分布式数据库系统的一个组成部分,那么这个数据库系统的正常工作就处于危险之中,可能会导致数据库系统中只有一部分数据是可以访问的。所以,了解分布式系统中常见的错误类型是十分必要的。按照不同的标准,有不同的划分故障类型的方法,Cristian、Hadzilacos和Toueg将分布式系统中故障划分为如表1所示的几种类型[CRISTIAN,1991;HADZILACOS,1993]。

分布式系统中故障类型

故障类型崩溃性故障󰀁󰀁󰀁󰀁遗漏性故障󰀁󰀁󰀁󰀁

󰀁󰀁󰀁接收性遗漏󰀁󰀁󰀁󰀁发送性遗漏󰀁

说󰀁󰀁󰀁󰀁明

服务员停机,但是在服务员停机之前工作是正常的

服务员对输入的请求没有响应服务员未能接收到输入报文服务员未能发送出输入报文

服务员对请求的响应不是按特定的时间间隔进行的

服务员的响应是错误的

情报纵横

时序性故障󰀁󰀁󰀁󰀁响应故障󰀁󰀁󰀁󰀁󰀁

󰀁󰀁󰀁值错误󰀁󰀁󰀁服务员给出了错误的响应值󰀁󰀁󰀁状态转换错误服务员背离了正确的控制流程随意性故障󰀁󰀁󰀁󰀁

服务员在随意的时刻产生了一个随意的响应。

3󰀁冗余的类型

容错是建立在冗余的基础上的,冗余是设置超过正常系统操作所需要的信息、资源或时间。下面是典型的四种冗余类型:

󰀁󰀁崩溃性故障(crashfailure)一般发生在服务员过早地停机。正常的情况下,一个服务员停机之前需要发送一些通告性信息,使得系统能够做一些相应的处理,例如重新启动例外一个服务员替换该服务员的服务等。如果一个服务员在没有发出任何提示信息的情况下突然停机,就会带来一系列的错误。例如在电源掉电和操作系统的死机的情况下都可以导致崩溃性故障。通常所提到的节点故障就是属于这种类型。

遗漏性故障(omissionfailure)发生在虽然服务员是活着的,但是对某个服务请求没有响应。遗漏性故障的第一种情况是服务员收不到输入请求,例如一个服务员在处理某个请求的时候,服务员没有一个线程用来侦听到达的服务请求。接收性遗漏故障不会改变服务员的当前状态,因为它没有意识到有请求报文发送给它。发送性遗漏故障发

3󰀁1󰀁硬件冗余

附加额外的处理器、I󰀁O设备等。

3󰀁2󰀁软件冗余

附加软件模块的额外版本等。

3󰀁3󰀁信息冗余

如使用了额外位数的错误检测代码等。

3󰀁4󰀁时间冗余

如用来完成系统功能的额外时间。

有些研究者将冗余分为三类,即物理冗余、信息冗余和时间冗余[JOHNSON,1995]。物理冗余可以用硬件冗余的方式或软件冗余的方式来实现,因为硬件和软件在逻辑上是等同的。信息冗余的一个例子是海明码(hammingcode),使用海明码技术可以纠正信息在传输中产生的错

󰀁224󰀁误。时间冗余的典型例子是原子操作和原子事务处理,原子操作和原子事务处理在执行中如果出现故障,相当于它们没有被执行,系统的状态保持不变,所以它们可以重新执行,只是需要额外的时间。

raA󰀁:[2]

参考文献

[1][BARBORAK,1993]BarborakM󰀁,MalekM.andDahbu󰀁

󰀁TheConsensusProbleminFault󰀁TolerantComputing󰀁,

󰀁Sequoia:AFault󰀁

ACMComputingSurvey,1993.6,25,(2):171󰀁220.

[BERNSTEIN,1988]BernsteinP󰀁:

TolerantTightlyCoupledMultiprocessorforTransactionProcessing󰀁,Computer,1988.2,21,(2):37󰀁45.[3]

[BIRMAN,1987]BirmanK.andJosephT󰀁:

󰀁Reliable

CommunicationinthePresenceofFailure󰀁,ACMTransactionsonComputerSystems,1987.2,5,(1):47󰀁76.

[4][BOWEN,1993]BowenN.andPradhanD󰀁:󰀁Processor󰀁andMemory󰀁BasedCheckpointandRollbackRecovery󰀁,IEEEComputers,1993.2,26,(2):22󰀁30.

[5][CHANDY,1985]ChandyK.andLamportL󰀁:󰀁Distribut󰀁edSnapshots:DetermingGlobalStatesofDistributedSystems󰀁,ACMTransactionsonComputerSystems,1985.2,3,63󰀁75.

[6][CRISTIAN,1991]CristianF󰀁:󰀁UnderstandingFault󰀁Tol󰀁erantDistributedSystems󰀁,CommunicationsoftheACM,1991.2,34,(2):56󰀁78.

[7][CRISTIAN,1991b]CristianF.andJahanainF󰀁:󰀁ATim󰀁estamp󰀁basedCheckpointingProtocolforLong󰀁livedDistributedComputations󰀁,10thSymposiumonReliableDistributedSystems,1991.10:12󰀁20.

[8][DOLEV,1982]DolevD󰀁:󰀁TheByzantineGeneralsStrikeAgain󰀁,JournalofAlgorithms,1982.1,3:14󰀁30.

[9][DOLEV,1983]DolevD.andStrongH󰀁:󰀁AuthenticatedAlgorithmsforByzantineAgreement󰀁,SAIMJournalofComputing,1983.11,12,(4):656󰀁666.[10]

[ELNOZAHY,1992]ElnozahyE.andZwaenepoelW󰀁:

󰀁Manetho:TransparentRollback󰀁RecoverywithLowOverhead,LimitedRollbackandFastOutputCommit󰀁,IEEETransactionsonComputers,1992.5,41,(5):526󰀁531.

(1):

4󰀁故障的基本处理方法

故障的基本处理方法有三种,它们是:

4󰀁1󰀁主动复制

所有的复制模块协同进行,并且它们的状态紧密同步。

4󰀁2󰀁被动复制

只有一个模块处于动态,其他模块的交互状态由这一模块的检查点定期更新。

4󰀁3󰀁半主动复制

是主动复制和被动复制的混合方法。此种方法所需的恢复开销相对较低。

主动复制用到了错误屏蔽(failuremasking)的概念,即隐藏出现的故障或防止故障造成错误。被动复制,又称为动态方法,通过从系统中检测错误的存在,并采取一定的措施移去错误部件来达到容错。在这一方案中,通过定期检查、自检循环和监视时钟等手段来检测错误。系统层错误诊断(system󰀁levelfaultdiagnosis)是研究在系统中识别错误部件的方法,对于分布式系统来说,这是一个十分困难的研究领域。

失效的检测可分为外部检测和内部检测两类。外部检测是指将检测节点失效的职责赋予被检测节点的外部附件。例如,用另外一个节点A来检测节点B。如果节点A正常,则假设通过预期的动作节点A能够检测节点B的任何偏差。如果A出现错误,则其诊断结果是随机的。内部检测将节点的失效检测机制置于该节点内部,通常检测部件被假定为一个可以完全信赖的󰀁硬核󰀁(hardcore)。通过内部检测和外部检测的联合应用可以得到有效的错误检测方案,例如编码技术就是这样的错误检测方案,它为数据总线、存储器和寄存器提供了低成本的错误检测方法。(上接第219页)

虽然有一定工作经验,还必须与国际接轨,按国际咨询业从业人员的资格,咨询员除了来自专业人士外,并需具备以下素质,参考馆员同样更不例外,以下是美国咨询从业人员必备的素养:

A.勇于开拓,充满激情,乐观向上。B.在大环境下考虑问题,不就事论事。

C.会运用综合知识体系分析问题,尤其注重用心理学、人类学、行为科学等社会科学知识。

D.具有冒险和广泛兴趣,擅长革新和在实践中解决问题。

E.注意自己角色的定位,不自负,学会做小学生,遵守企业法人意志优先的原则。牢固树立以人为本的服务观。

总之,无论来自何方的挑战,落实到实质上是人才的竞争,因而参考馆员应清醒地认识到高素质的培训和自我完善是尤为重要的。

参考文献

[1]CharlesR󰀁Anderson,󰀁ReferenceLibrarianship:AGuideforthe21stCentury󰀁TheReferenceLibrarian,2001,72.

[2]咨询概览:ConsultingSurvey.北京科技咨询业协会,2001.

[3]󰀁HowFarOutisNanotechnology?󰀁PCMagazine,1994.[4]BrianQuinn,

󰀁Cooperationandcompetitionatthereference

desk󰀁TheReferenceLibrarian,2001,71.

[5]KarlaJ󰀁Block,󰀁IntegratinginformalprofessionaldevelopmentintotheworkofReference󰀁TheReferenceLibrarian,2001,71.

因篇幅问题不能全部显示,请点此查看更多更全内容