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

《分布式系统》李西宁,课件,第9章.ppt

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

第九章 容错机制 物理冗余:磁盘阵列实例 RAID被分为若干等级,分别为0,1,2,3,4,5,6,10,50,以及0+1,不同等级的系统具有不同的容错能力。 进程组管理 当一个系统采用编组方案时,必须提供各种管理手段,诸如组播通信、组创建及删除、成员进入与退出等等。最简单的实现方式是设置一台编组服务器(Group Server) ,由它来管理所有涉及编组的服务请求。管理编组的另外一种途径是采用分布式方案,借助于一种可靠的组播通信协议,各编组自行管理,同时成员的进入与退出也通过组播通信进行。 分布式协定 分布式协定(Distributed Agreement)算法的目的就是使得所有无故障进程在有限步骤里对某个问题达成一致性结论。 假定我们有n个进程,P = {p1, p2, …, pn},试图达成一致的协定,并且每个进程pi?P都拥有一个初始值Vi。如果这组进程的一个子集F是故障进程,则(P – F) 为无故障进程集。 分布式协定算法的目的是使得P中每一个进程计算一个协定值Ai,当算法结束时,下面两个条件成立: (1)令pi, pj (i ? j;i, j = 1..n)为任意两个进程,如果pi,pj?(P – F), 则Ai = Aj。我们把这个值称为一致协定值。 (2)一致协定值是(P – F)中所有进程初始值{Vi}的函数。 拜占庭将军问题 假设有N支拜占庭部队包围了敌军,每支部队都由一位将军统领,将军与将军之间由信使传递信息。 将军之中可能有通敌者,这个(些) 通敌者试图用矛盾的信件来混淆视线,破坏将军们之间可能达成的协定。 假定发布命令(广播通信)的将军是司令,而其他将军都是军长,要想达成一致协定,所有的军长都必须“同意”司令发出的命令。 当然,要解决拜占庭将军问题,每一位将军都要扮演一次司令的角色,向其他将军广播消息。更确切地说,每一位将军pi都必须把自己的初始值Vi发送给其他将军,并满足下述两个条件(称为相互一致性): (1) 如果发送者ps是忠诚的,则所有忠诚的将军都要同意Vs; (2) 如果发送者ps是通敌的,则所有忠诚的将军都对Vs有一致的看法。 三位拜占庭将军问题 (1)首先,我们假定司令通敌。于是他向军长A发出“进攻”而向军长B发出“撤退”的相互矛盾的命令。当两位军长互相验证所得到的命令时,发现无法得到一致的结论。看上去是司令出了问题,但问题并非如此简单。在(2)中,假定司令发出正确的命令,而军长B通敌。当两位军长验证来自司令的命令时,军长B把“进攻”篡改为“撤退”。对军长A来说,(1)和(2)并无区别,他在这两种情况下都收到相互矛盾的消息(一封“进攻”,一封“撤退”)。显然,军长A不能服从来自司令的命令,因为如果司令通敌的话,两位忠诚的将军就不可能一致行动,而是背道而驰;可是,如果司令是忠诚的,军长A又不能违抗来自司令的命令,如果违抗,将受到军法从事。于是,军长A陷入两难境地,无法做出决定。 四位拜占庭将军问题 (1)我们仍然假设司令通敌,也就是说,司令向军长们发出两种不同的命令。然而,三位忠诚的军长在随后的通信中,都得到一组相同的命令,即(进攻,进攻,撤退),根据多数原则,三位军长便采取一致的行动,同时发起进攻。而(2)中,军长C通敌,尽管他篡改了来自司令的命令,军长A和军长B还是能够通过多数原则做出决定,即执行来自司令的正确命令。Lamport等人文章把这个原则推广到一般情况:在一可能具有拜占庭故障的系统中,我们需要至少3t + 1个服务器才能具备t-容错的能力 组播通信分类 不可靠的组播通信:试图将信件送达组内所有成员,不需要反馈信息。 可靠的组播通信:试图将信件送达组内所有成员,利用回应(ACK)技术检查是否送达或者是否需要重发。 原子组播通信:利用可靠的组播通信将信件送达组内所有成员,同时保证要么所有成员都接收到信件,要么没有任何成员接收到信件。 虚同步组播算法的条件 我们假定进程P1发出组播信件后立即崩溃,从而引发编组图的变化,即G1从变为G2。当这种编组发生变化的时候,如何提交组播信件才能满足虚同步条件呢?子图(1)例举了两种满足虚同步条件的组播通信实例,而子图(2)给出了两种不满足条件的情况。 虚同步组播的例子 四个进程编为一组,当进程P2和随后的P1发出组播信件m1和m2时,它们都有相同的编组图G1 = {P1, P2, P3, P4}。假定组播通信是采用可靠的点对点通信协议实现的,相邻的黑点代表一次组播通信。当进程P3组播m3时,突然发生了崩溃故障,可是在崩溃前已经向P2和P4发出了m3。虚同步组播机制就必须对这种情况采取对策,即保证不向P2和P4提交m3。如果做到这一点,其效果就等价于当进程P3自动退出编组,根本没有发送过m3。

文档评论(0)

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

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

1亿VIP精品文档

相关文档