网站大量收购闲置独家精品文档,联系QQ:2885784924

分布式系统之10、容错性.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布式系统之10、容错性

多播:发送到进程组的消息被传送到组中所有成员。 多播面临的问题: 通信期间,有进程加入组 通信期间组中有成员崩溃 最简单解决方法:对进程组每个成员建立点到点的连接 一种简单有效的方法如下页图示。 简单的可靠多播 简单方法致命问题 当接受者数量庞大时,大量的反馈消息将淹没发送者,引起反馈拥塞。 解决方法一:只在消息丢失时反馈 问题:发送者只好永远在历史缓存器中保留消息,因为不知道消息是否送达。而且即使否定反馈依然可能拥塞。 方法二:无等级反馈控制 接受者不发送成功确认 当丢失消息时向组中其他成员多播其否定反馈 而其他成员如果也丢失了消息,则在收到这个丢失反馈后不再向发送者发送丢失反馈 保证了只有一个重发请求送往发送者。 无等级反馈抑止 无等级反馈的实际应用中还是有困难: 首先要确保只有一个重发请求发送到发送者,需要所有接受者对反馈进行准确的调度,这在散布在广域网中的进程组是难事。 其次多播反馈有可能中断其他成功接收消息的进程。 方法三:分等级反馈控制 接收进程组的成员数量非常大 接受组被划分为许多子组,这些子组组织成树的形式,包含发送者的子组构成了树的根 在每个子组内,可以选用任意一种可靠多播方案 每个子组都指定一个本地协调者,负责处理子组的接收,以及本地的重发 本地协调者具有自己的历史缓存 分等级的可靠多播 主要问题: 树的建立,很多情况下树是动态建立的 当把进程失败的情况考虑进来,就需要用原子多播。 在分布式系统中对进程组多播时,经常需要保证消息要么发送给所有进程,要么就不向任何进程发送。有时还需要按相同的顺序发送给所有进程。这种方式多播就是原子多播。 基本概念 故障 使用冗余掩盖故障 容错即意味着系统能在故障发生的情况下继续提供服务。 几个相关概念 可用性:系统可以工作,即可被使用 可靠性:指系统可以无故障地持续运行 安全性:系统在偶然出现故障的情况下可以正确操作而不会造成任何灾难。 可维护性:系统发生故障后,恢复的难易程度 可以分为暂时的、间歇的和持久的。 可以进一步分为以下类型: 故障类型 说明 崩溃性故障 服务器停机,但停机之前工作正常 遗漏性故障 接收遗漏 发送遗漏 服务器不能响应来到的请求 服务器不能接收消息 服务器不能发送消息 定时故障 服务器未能按时响应 响应故障 值故障 状态转换故障 服务器响应不正确 响应值不正确 服务器偏离了正确的控制流 随意性故障 服务器可能在随意的时间产生随意的响应 分布式系统容错的目的 对其他进程或客户隐藏故障(故障透明性) 容错手段:使用冗余掩盖故障 三种冗余方法: 信息冗余:添加额外的位以使错误的位恢复。 时间冗余:多次重复一个操作,适合临时性或间歇性故障。 物理冗余:物理上添加备份 进程组 平等组和等级组 组成员的管理 进程组 把多个相同的进程组织到一个逻辑的组中 当组中某个成员进程遭遇故障而不能工作时,组中其他成员可以接管它 目的 允许把进程的集合作为逻辑上单一的对象来处理,增加系统的容错性 进程组特性 组本身可以是动态的 组成员可以是动态的 一个进程可以从属于多个组 类型:平等组和等级组 平等组 对应分布式概念 所有成员地位都是相同的 所有决定都是共同作出的 等级组 对应集中式概念 一般有一个协调者进程,其他则是工作者 组内关系和动作由协调者做决定 平等组和简单等级组 平等组 没有单独故障点 决策效率低 等级组 有单个故障点 决策效率高。 基本问题 加入与离开组 成员故障处理 使用组管理服务器(集中式方法) 所有进程要加入或者离开组都向它申请 优点:直接,高效,易于实现 缺点:单一失败点 分布式方法 进程加入和离开组需要给所有成员发请求,共同作出决定 当成员发生故障崩溃时,需要通过一些协议来重建组 分布式系统通信的可靠性设计的重点在于掩盖 崩溃性故障 遗漏性故障 随意性故障—通过重复消息的形式排除。 对于点到点通信,如TCP通信,崩溃性故障只能由分布式系统重新建立连接。 在RPC调用中,有5种失败形式: 客户不能定位服务器 客户到服务器的请求消息丢失 服务器在收到请求之后崩溃 从服务器到客户的响应消息丢失 客户在发送请求之后崩溃 客户端不能定位服务器 由应用程序抛出异常来处理 请求消息丢失 超时重发机制 两种情况,但对客户来说,都是超时 执行之后崩溃 执行之前崩溃 三种处理方式 在服务器重启之前等待并再次尝试操作 立即放弃并报告失败 什么都不保证 也是依靠客户端的超时重发机制处理 问题:转帐 另一种方法: 为每个客户请求配一个序列号,这样服务器就能分辨客户的新请求与重发的请求,当服务器收到重发的请求时,不执行重复操作 最大问题:孤儿进程的产生 RPC调用中,客户进程与它调用的服务器计算之间是父子关系,当客户崩溃后,驻留在服

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档