- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
陈香兰@2006.3.27 分布式系统同步 分布式系统的同步(续) 陈香兰@2006年3月27日 上次课回顾 分布式系统同步主要研究分布式进程之间如何协作、如何彼此同步。例如临界区的实现问题、资源的分配问题等等。 时间在分布式系统同步研究中很重要。 时间一致性 集中式系统中的时间 vs 分布式系统中的时间 与真实时间的关系 逻辑时钟 vs 物理时钟 上次课回顾(cont.) Lamport的逻辑时钟算法 时钟同步算法 Cristian’s算法 Berkeley算法 平均值算法 分布式系统互斥 集中式算法 分布式算法 令牌环算法 本次课内容 选举算法 确定一个协调者 原子事务 要么全有要么全无的特性简化了编程人员的工作 涉及原子事务的使用、设计和实现 分布式系统中的死锁 鸵鸟算法 分布式死锁的检测和恢复 分布式死锁的预防 3.3 选举算法 许多分布式算法需要一个进程充当协调者、发起者、排序者或者其他特定的角色 例如:集中式互斥算法中的协调者 通常,选择哪个进程充当协调者并不重要,重要的是要有进程负责 本节,我们将了解选举协调者的算法 最大进程号 如果所有进程的地位都相同,没有特性上的区别,就无法选择其中一个为特殊进程 假设每个进程有一个特殊的号码,例如机器的网络地址(为简单起见,假定每个机器只有一个进程) 通常选举算法总是找拥有最大号码的进程,将它指定为协调者,各算法在选举时有不同的方法 选举的目的 我们假设每个进程都知道所有其他进程的进程号,但不知道目前哪些进程正常,哪些进程不正常。 选举算法的目的是在选举开始后,确保在所有进程都同意的基础上选出协调者 两个选举算法 欺负(Bully)算法 环算法 3.3.1 欺负(Bully)算法 Bully算法由Garcia-Molina在1982年提出 当一个进程P发现协调者不再响应请求时,它就发起选举。进程P负责选举如下: P向所有号码比它大的进程发送选举(ELECTION)消息; 若无人响应,P获胜成为协调者; 若有号码比它大的进程响应,响应者接管,P的工作完成。 由于总是号码最大的进程获胜,故该算法命名为欺负算法 在某一时刻,一个进程只能从号码比它小的进程那里得到一个选举(ELECTION)消息,当它到达时,接收者就发送回OK消息,表明它的存在并接管,然后接收者主持选举(除非它正在主持别的选举)。 除了一个进程外,其余进程都得放弃,这个进程就是新的协调者,它将选举获胜的消息发送给所有进程,告之它是新的协调者。 若一个进程刚刚崩溃过,而又得到恢复,它主持选举,若它刚好是当前运行进程中号码最大的,它就会获得选举的胜利,从而接管协调者的工作。 举例 一组由0~7号共8个进程组成,开始7号进程是协调者,但是它突然发生了故障,进程4第一个注意到这一点,所以它向所有比它进程号大的进程,即进程5、6、7发送选举消息。 进程5和6接收消息后发送回OK。进程4接收到第一个应答时就知道自己已经结束了,因为已经有比它进程号大的进程即将接管它的工作成为新的协调者,它就等待着看谁将在选举中获胜。 进程5和6都主持选举,每个进程仅把消息发送给比自己进程号大的进程 近程6告诉进程5它将成为协调者,而这个时候进程6知道进程7已经死了,而且它将是获胜者。 如果从磁盘或其他地方无法得到一些状态信息表明原来的协调者在哪里失效,进程6则要做这部分工作。 进程6接管,向所有的运行进程发送COORDINATOR协调者消息 进程4收到消息,发现进程7已死,进程6是新协调者,进程4就可继续工作。 这样,进程7的失效得到了处理 举例(小结) 上述例子经历了5个步骤 进程4主持选举 进程5和进程6分别应答,通知进程4停止 进程5和进程6分别主持选举 进程6通知进程5停止 进程6获胜并通知所有进程 如果进程7重新启动,它就会向所有的进程发送协调者消息,使它们受到欺负。 3.3.2 环算法 环算法基于没有令牌的环 假设所有的进程是按物理或逻辑排序的,每个进程都知道谁是它的后继者。 当任何一个进程发现协调者不再起作用时,它就构造一个包含它自身进程号的选举消息发送给它的后继者。 如果后继者失效,消息将绕过后继者到达后继者的后继者,或者再下一个,直到找到一个运行进程。 每次,发送者都将自己的进程号加入到消息表中。 最后,消息到达了始发者手中,始发者接收到包括自己进程号的消息后,将消息的类型转化为协调者消息,该消息将再一次绕环运行,向所有的进程通知谁是协调者(在成员表中进程号最大的那个)和新的环成员。 当消息循环一周后,被去掉,每个进程都恢复工作。 举例 进程2、5同时发现前任协调者进程7失效,它们各自建立一个选举消息沿环发送。 最终,两条消息都将沿环运动,进程2和5分别将它们转化成协调者消息,消息中有完全一样的成员,相互
您可能关注的文档
最近下载
- 训练基地信息化系统维保项目方案投标文件(技术方案).doc
- 人教版道德与法治三年级上册第5课《 走近科学家》第2课时 他们离我们并不遥远 教学课件.pptx VIP
- 黄浦区卢湾中学能源审计报告.pdf VIP
- HDJH30-120J型架桥机说明书.doc
- 5.2用圆设计图案(表格式)教学设计 人教版六年级上册数学.docx VIP
- 航空集装器知识 .pdf VIP
- SHT-3012-2011 石油化工金属管道布置设计规范.pdf VIP
- AI赋能教育的思考与应用 教师培训课件.pptx VIP
- sfz jd2015数据库数据真实性鉴定.pdf VIP
- 公司中层领导人员任职回避和公务回避管理实施细则.docx VIP
文档评论(0)