《分布式系统:概念与设计》一2.4.2 故障模型

2.4.2 故障模型

在分布式系统中,进程和通信通道都有可能出故障,即它们可能偏离被认为是正确或所期望的行为。故障模型定义了故障可能发生的方式,以便理解故障所产生的影响。Hadzilacos和Toueg[1994]提供了一种分类法,用于区分进程故障和通信通道故障。这些故障将分别在下面的“遗漏故障”、“随机故障”和“时序故障”部分介绍。
本书将贯穿使用故障模型。例如:

  • 第4章给出数据报和流通信的Java接口,它们分别提供不同程度的可靠性。
  • 第5章给出支持RMI的请求-应答协议。它的故障特征取决于进程和通信通道两者的故障特征。该协议能用数据报或流通信实现。可根据实现的简单性、性能和可靠性作出决定。
  • 第17章给出事务的两阶段的提交协议。它用于在面对进程和通信通道的确定性故障时完成事务。
    遗漏故障 遗漏故障类错误指的是进程或通信通道不能完成它应该做的动作。
    进程遗漏故障:进程主要的遗漏故障是崩溃。当我们说进程崩溃了,意为进程停止了,将不再执行程序的任何步骤。能在故障面前存活的服务,如果假设该服务所依赖的服务能干净利落地崩溃,即进程仍能正确运行或者停止运行,那么它的设计能被简化。其他进程通过下列事实能检测到这种进程崩溃:这个进程一再地不能对调用消息进行应答。然而,这种崩溃检测的方法依赖超时的使用,即进程用一段固定时间等待某个事件的发生。在异步系统中,超时只能表明进程没有响应——它可能是崩溃了,也可能是执行速度慢,或者是消息还没有到达。
    如果其他进程能确切检测到进程已经崩溃,那么这个进程崩溃称为故障-停止。在同步系统中,如果确保消息已被传递,而其他进程又没有响应时,进程使用超时来检测,那么就会产生故障-停止行为。例如,对于进程p和q,如果设计q应答来自p的消息,而且进程p在按p本地时钟度量的一个最大时间范围内没有收到进程q的应答,那么进程p可以得出结论:进程q出现了故障。下面的“故障检测”和“面对通信故障时达成协定的不可能性”部分说明在异步系统中检测故障的困难以及在故障面前达成协定的困难。
     图2-14 进程和通道通信遗漏故障:考虑通信原语send和receive。进程p通过将消息m插入到它的外发消息缓冲区来执行send。通信通道将m传输到q的接收消息缓冲区。进程q通过将m从它的接收消息缓冲区取走并完成传递来执行receive(见图2-14)。通常由操作系统提供外发消息缓冲区和接收消息缓冲区。

如果通信通道不能将消息从p的外发消息缓冲区传递到q的接收消息缓冲区,那么它就产生了遗漏故障。这就是所谓的“丢失消息”,造成消息丢失的原因通常是在接收端或中间的网关上缺乏缓冲区空间,或因为网络传输错误(可由消息数据携带的校验和检测到)。Hadzilacos和Toueg[1994]把在发送进程和外发消息缓冲区之间的消息丢失称为发送遗漏故障;在接收消息缓冲区和接收进程之间的消息丢失称为接收遗漏故障;在两者之间的消息丢失称为通道遗漏故障。遗漏故障和随机故障的分类见图2-15。
故障检测 在Pepperland师驻扎在山顶的情况下(见“Pepperland协定”部分),假设敌军聚集足够的力量攻击任意一个扎营的师,那么任意一个师都可能失败。进一步假设,在没有被攻击的时候,各师定时地派出通信兵向对方报告自己的状态。在异步系统中,没有一个师能区别是对方被打败了还是通信兵跨越中间山谷的时间太长。在同步的Pepperland中,一个师通过应该定期出现的通信兵的缺席就能判断出另一个师是否被打败了。但是,另一个师可能在派出最后一个通信兵后就被打败了。
面对通信故障时达成协定的不可能性 我们一直假设Pepperland通信兵最终总能设法通过山谷,但现在要假设敌军会抓住通信兵,阻止他到达(我们还假设敌人不可能给通信兵“洗脑”,从而让他传达错误的消息)。红师和蓝师能发送消息使得他们能一致决定对敌军冲锋或投降吗?非常遗憾,正如Pepperland理论家Ringo大师证明的一样,在这样的环境中,两个师不能一致地决定做什么。为了了解这一点,假设其反面观点成立即两个师能执行达成一致的Pepperland协议。某一方提出“冲锋!”或“投降!”,协议使得双方同意这一方或另一方的动作。现在考虑在某一轮协议中发送的最后一个消息。携带消息的通信兵可能被敌军俘虏。不论消息到达与否,最后的结果必须一致。所以我们去掉它。现在我们对剩下消息中的最后一个应用同一论点。这个论点可再应用到那个消息,然后继续应用这个论点,最后我们将以没有要发送的消息结束!这表明如果通信兵被俘虏,就没有保证Pepperland师之间一致的协议存在。

故障可以按照它们的严重性分类。到现在为止,我们描述的所有故障是良性故障。在分布式系统中,大多数故障是良性的。良性故障包括遗漏故障以及时序故障和性能故障。
随机故障 术语随机故障或拜占庭故障用于描述可能出现的最坏的故障,此时可能发生任何类型的错误。例如,一个进程可能在数据项中设置了错误的值,或为响应一个调用返回一个错误的值。
进程的随机故障是指进程随机地省略要做的处理步骤或执行一些不需要的处理步骤。进程的随机故障不能通过查看进程是否应答调用来检测,因为它可能随机地遗漏应答。
通信通道也会出现随机故障。例如,消息内容可能被损坏或者传递不存在的消息,也可能多次传递实际的消息。通信通道的随机故障很少,因为通信软件能识别这类故障并拒绝出错的消息。例如,可用校验和来检测损坏的消息,消息序号可用于检测不存在和重复的消息。
时序故障 时序故障适用于同步分布式系统。在这样的系统中,对进程执行时间、消息传递时间和时钟漂移率均有限制。时序故障见图2-16的列表。这些故障中的任何一个均可导致在指定时间间隔内对客户没有响应。
故 障 类 型影 响 对 象描  述时钟进程进程的本地时钟超过了与实际时间的漂移率的范围性能进程进程超过了两个进程步之间的间隔范围性能通道消息传递花费了比规定的范围更长的时间

在异步分布式系统中,一个负载过重的服务器的响应时间可能很长,但我们不能说它有时序故障,因为它不提供任何保证。
实时操作系统是以提供时序保证为目的而设计的,但这种系统在设计上很复杂的,会要求冗余的硬件。大多数通用的操作系统(如UNIX)不能满足实时约束。
时序与有音频和视频通道的多媒体计算机的关系尤为密切。视频信息要求传输海量的数据。若要在传递视频信息时不出现时序故障,那么就要对操作系统和通信系统提出特殊的要求。
故障屏蔽 分布式系统中的每个组件通常是基于其他一组组件构造的。利用存在故障的组件构造可靠的服务是可能的。例如,保存有数据副本的多个服务器在其中一个服务器崩溃时能继续提供服务。了解组件的故障特征有利于在设计新服务时屏蔽它所依赖的组件的故障。一个服务通过隐藏故障或者将故障转换成一个更能接受的故障类型来屏蔽故障。对于后者,我们给出一个例子,校验和用于屏蔽损坏的消息,它有效地将随机故障转化为遗漏故障。第3章和第4章介绍通过使用将不能到达目的地的消息重传的协议可以隐藏遗漏故障。第18章将介绍利用复制进行故障屏蔽的方法。甚至进程崩溃也可以屏蔽,即通过替换崩溃进程并根据原进程存储在磁盘上的信息恢复内存来实现。
一对一通信的可靠性 虽然基本的通信通道可能出现前面描述的遗漏故障,但用它来构造一个能屏蔽某些故障的通信服务是可能的。
术语可靠通信可从下列有效性和完整性的角度来定义:
有效性:外发消息缓冲区中的任何消息最终能传递到接收消息缓冲区。
完整性:接收到的消息与发送的消息一致,没有消息被传递两次。
对完整性的威胁来自两个方面:

  • 任何重发消息但不拒绝到达两次的消息的协议。要检测消息是否到达了两次,可以在协议中给消息附加序号。
  • 心怀恶意的用户,他们可能插入伪造的消息、重放旧的消息或篡改消息。在面对这种攻击时为维护完整性要采取相应的安全措施。
时间: 2024-09-27 09:52:42

《分布式系统:概念与设计》一2.4.2 故障模型的相关文章

《分布式系统:概念与设计》一第3节 练习

前 言 在互联网和Web持续发展并且对我们社会的每个方面都产生影响的时候,这本教材的第5版问世了.本书的介绍性章节提到互联网和Web对诸多(如金融.商业.艺术.娱乐等)应用领域的影响以及对信息社会的普遍影响.它还强调了诸如Web搜索和多人在线游戏等应用领域中的需求.从分布式系统的角度出发,这些开发在应用的范围.多个现代系统所支持的工作负载和系统大小等方面正在对底层系统架构提出实质性的新需求.重要的趋势包括网络技术上不断增加的多样性和普遍性(包括不断增加的无线网络的重要性).移动和无处不在计算元素

《分布式系统:概念与设计》一1.2 分布式系统的例子

1.2 分布式系统的例子 本节给出能激发读者学习积极性的当代分布式系统的例子,用于说明分布式系统所扮演的无处不在的角色和相关应用的多样性. 如1.1节所提及的那样,网络无处不在,成为我们现在认为理所当然的日常服务(互联网和相关的万维网.Web搜索.在线游戏.电子邮件.社会网络.电子商务,等等)的基础.为了进一步说明这一点,可参考图1-1,它描述了一系列所选的关键商务或社会应用部门,强调了相关的分布式系统技术已公认或新出现的应用. 正如所看到的,分布式系统包含近些年许多最重要的技术发展,因此理解底

《PADS 9.5电路设计与仿真从入门到精通》——第一章 绪论 1.1 PCB的基本概念及设计工具

第一章 绪论 PADS 9.5电路设计与仿真从入门到精通 本章主要介绍PADS的基本概念及特点,包括PCB设计的一般原则.基本步骤.标准规范等.着重介绍了美国Mentor Graphics公司的PCB设计软件:PADS 9.5,包括了PADS 9.5的发展过程以及它的新特点.PADS 9.5是一款非常优秀的PCB设计软件,它具有完整强大的PCB绘制工具,界面和操作十分简洁,希望用户好好学习本书,以便更加方便地使用PADS 9.5软件. 1.1 PCB的基本概念及设计工具 PADS 9.5电路设计

《分布式系统:概念与设计》一练习

练习 1.1 列出能被共享的五种类型的硬件资源和五种类型的数据或软件资源,并举出它们在实际的分布式系统中发生共享的例子. 1.2 在不参考外部时间源的情况下,通过本地网络连接的两台计算机的时钟如何同步?什么因素限制了你描述的过程的准确性?由互联网连接的大量的计算机的时钟是如何同步的?讨论该过程的准确性. 1.3 考虑1.2.2节讨论的大型多人在线游戏的实现策略.采用单一服务器方法表示多个玩家游戏状态的好处是什么?这存在什么问题以及如何解决? 1.4 一个用户随身携带可以无线连网的PDA,来到一个

《分布式系统:概念与设计》一2.3.1 体系结构元素

2.3.1 体系结构元素 为了理解一个分布式系统的基础构建块,有必要考虑下面四个关键问题: 在分布式系统中进行通信的实体是什么? 它们如何通信,特别是使用什么通信范型? 它们在整个体系结构中扮演什么(可能改变的)角色,承担什么责任? 它们怎样被映射到物理分布式基础设施上(它们被放置在哪里)? 通信实体 上述前两个问题是理解分布式系统的关键:什么是通信和这些实体如何相互通信为分布式系统开发者定义了一个丰富的设计空间.它对从面向系统和面向问题的角度解决第一个问题是有帮助的. 从系统的观点,回答通常是

《分布式系统:概念与设计》一2.4.1 交互模型

2.4.1 交互模型 2.3节对系统体系结构的讨论表明分布式系统由多个以复杂方式进行交互的进程组成.例如: 多个服务器进程能相互协作提供服务,前面提到的例子有域名服务(它将数据分区并复制到互联网中的服务器上)和Sun的网络信息服务(它在局域网的几个服务器上保存口令文件的复制版本). 对等进程能相互协作获得一个共同的目标.例如,一个语音会议系统,它以类似的方式分布音频数据流,但它有严格的实时限制. 大多数程序员非常熟悉算法的概念--采取一系列步骤以执行期望的计算.简单的程序由算法控制,算法中的每一

《分布式系统:概念与设计》一3.1 简介

3.1 简介 要构建分布式系统所使用的网络,首先需要众多的传输介质,包括电线.电缆.光纤以及无线频道:然后需要一些硬件设备,包括路由器.交换机.网桥.集线器.转发器和网络接口:最后还需要软件组件,包括协议栈.通信处理器和驱动器.上述因素都会影响分布式系统和应用程序所能达到的最终功能和性能.我们把为分布式系统提供通信设施的软硬件组件称为通信子系统.计算机和其他使用网络进行通信的设备称为主机.结点则指的是在网络上的所有计算机或者交换设备.互联网是一个通信子系统,它为所有接入的主机提供通信服务.互联网

《分布式系统:概念与设计》一1.1 简介

1.1 简介 计算机网络无处不在.互联网也是其中之一,因为它是由许多种网络组成的.移动电话网.协作网.企业网.校园网.家庭网.车内网,所有这些,既可单独使用,又可相互结合,它们具有相同的本质特征,这些特征使得它们可以放在分布式系统的主题下来研究.本书旨在解释影响系统设计者和实现者的连网的计算机的特征,给出已有的可帮助完成设计和实现分布式系统任务的主要概念和技术.我们把分布式系统定义成一个其硬件或软件组件分布在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统.这个简单的定义覆盖了所有可

《分布式系统:概念与设计》一第2章 系统模型

第2章 系统模型 本章提供三个重要且互补的解释方法,以便有效地描述和讨论分布式系统的设计:物理模型考虑组成系统的计算机和设备的类型以及它们的互连,不涉及特定的技术细节.体系结构模型是从系统的计算元素执行的计算和通信任务方面来描述系统:这里计算元素或是指单个计算机或是指通过网络互连的计算机集合.客户-服务器和对等模型是分布式系统中的两种最常使用的体系结构模型.基础模型采用抽象的观点描述大多数分布式系统面临的单个问题的解决方案.在分布式系统中没有全局时间,所以不同计算机上的时钟未必给出相同的时间.进

《分布式系统:概念与设计》一1.5 挑战

1.5 挑战 1.2节的例子试图说明分布式系统的范围,并提出在设计中出现的问题.在许多系统中,遇到了重大的挑战并且已经得到解决.随着分布式系统的应用范围和规模的扩展,可能会遇到相同的和其他的挑战.本节我们描述主要的挑战. 1.5.1 异构性 互联网使得用户能在大量异构计算机和网络上访问服务和运行应用程序.下面这些均存在异构性(即存在多样性和差别): 网络: 计算机硬件: 操作系统: 编程语言: 由不同开发者完成的软件实现. 虽然互联网由多种不同种类的网络组成(见图1-3),但因为所有连接到互联网