- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 分布式系统的可靠性 基本模型 分布式系统的一个重要目标是获取高度的可依赖性(Dependability)。 可依赖性的概念包括以下三个方面: 可靠性:在错误存在的情况下持续服务的能力。 安全性:不出现灾难性错误的能力。 保密性:指避免、或承受对系统进行的故意性攻击的能力。 本章重点关注可依赖性中的可靠性,即故障、错误或失效(faults, errors, or failures,这些概念通用)的检测和处理。 基本模型 分布式系统可靠性的目标是当故障发生时,确保系统的全局一致性。即确保系统具备容错能力。 故障来源于如下4类: 节点(硬件)故障:物理硬件故障; 程序(软件)故障:软件设计或编码错误; 通讯故障:通信介质故障; 时序故障:物理故障导致运行时序错误。 基本模型 要确保系统具备容错能力,通常使用冗余技术。 有四种冗余类型: 硬件冗余:如额外的PE、I/O系统等。 软件冗余:如软件模块的额外版本。 信息冗余:如使用了额外位数的错误检测代码。 时间冗余:如用来完成系统功能的附加时间。 基本模型 有三种基本的处理故障的方法: 主动复制。所有的复制模块协同进行,并且它们的状态紧密同步。 被动复制。由唯一的一个处于主动的模块设定定期检查点,定期更新其它模块的交互状态。 半主动复制。是主动复制和被动复制的混合。此种方法所需的恢复开销相对较低。 主动复制用到了错误屏蔽的概念,即隐藏出现的故障或防止故障造成错误结果。 被动复制,又称为动态方法,它通过从系统中检测错误的存在,并采取一定措施转移错误元件来获得容错。 基本模型 故障检测可被分为两类: 外部检测:将检测节点失效的职责赋予节点的外部附件(或其它节点)。但需防止检测者本身故障、检测者和被检测者间通信故障时导致的误检(误报)。 内部检测将检测机制置于一个节点内部(自检)。通常假定内部有一个可以完全信赖的“硬核”(hardcore)检测元件,“硬核”不受节点故障的冲击。完全做到这一点其实是很难的。 通常结合使用外部检测方法和内部检测方法,以得到一个有效的故障检测方案。 故障检测的技术实施手段包括:通信应答超时、编码校验、结果比较等。 基本模型 处理软件故障通常采用两个软件模型: 基于进程的模型:一个应用程序由一连串协同作业的进程组成,如[ P1‖P2‖…‖Pn ]。 基于对象的模型:一个应用程序由一连串对象组成,每一个对象都是一个独立的原子操作。通过很好定义的界面访问,就可以获得对象的封装。 我们的讨论中,以基于进程的模型为例。 容错系统设计的构件模块 具备容错能力的、可靠的分布式系统中涉及到三种逻辑实体,包括二种构件模块: 稳定存储器 故障-停止处理器 和一个用于构件模块的: 原子操作 稳定存储器 稳定存储器是在系统失效的情况下,可以躲过系统错误的特定存储空间的抽象概念。也就是说,稳定存储器空间里的内容不被一个失效所摧毁。 存储器的两个基本操作是读和写,稳定存储器的目标是在系统失效的情况下,屏蔽不希望的事件,正确地执行读、写操作。 稳定存储器 对于读read(address: a)来说,返回(status:good or bad, data: d),其不希望结果包括: a是好的,但读取返回bad; 同上,而且后来的读也返回bad; a是坏的,但读取返回good;或者a是good,但读取返回不同的数据d。 对于写write(address: a, data:d)来说,其不希望的结果: a保持不变,而d变为不同的数据d; a变为(bad, d)。 一个理想的稳定存储器:读总是返回正确的结果,写总是成功。 稳定存储器-RAID 获得适宜的稳定存储器的一个方法是使用RAID技术(Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列)。 目前常用的有下列RAID技术: 故障-停止处理器 一个处理器故障时,最好的结果是不进行任何不正确的操作,而简单地停止工作。这样的处理器称为故障-停止处理器。 一个故障-停止处理器有以下特性: (a)处理器停止运行。 (b)暂态存储丢失,而稳态存储不受影响。 (c)任何处理器均可检测到故障-停止处理器的失效状态。 故障-停止处理器 可以使用下面的方法使一个非故障-停止处理器变成一个故障-停止处理器: 使用稳定存储器和一个可靠的存储处理器(一个控制存储媒介的处理器)以及k+1个处理器: 这k+1个处理器都运行同样的程序并通过存储处理器访问同一个稳定存储器。 如果存储处理器发现任何一个请求是不同的,或者任何一个请求没有在指定的期间到达存储处理器,则意味着检测到一个失效事件,因而应该丢弃所有请求。 这个故障-停止处理器是一个k-故障-停止处理器:当系统中有?k个元件失效时,仍然可以满足故障-停止处理器的要求
文档评论(0)