选举算法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
选举算法

简介选举算法中的概念: 1.选举: 选举是分布式系统中的一种常用的计算类型,它从进程集中选出一个进程执行特别的任务。例如,在分布式系统出现故障后,通常需要重新组织活动的节点使它们继续执行有用的任务。在这个重新组织和配置的过程中,第一步就是要选出一个协调者来管理这些操作。故障的检测通常是基于超时机制的。如果一个进程超过一定的时间没有收到协调者的响应,它就怀疑协调者出了故障并启动选举过程。选举在群服务器、负载平衡、重复数据更新、应急恢复、连接组和互斥等领域都有广泛应用。 2.选举过程: (a)选择一个具有最高优先级的领导者,(b)通知其他进程谁是领导者(优胜者) 3.选举问题: 在对各种应用程序或分布式系统设计分布式算法时,一些一般性的问题经常可以看成是一种选举问题,选举问题成为分布式计算的基本问题。 从具有同一地位(状态)的进程的形态开始,系统最后到达一个形态,在这个形态,进程中有一个进程处于leader(领导人)地位(状态),而其他所有进程则处于lost(落选)状态。例如,要启动集中式算法,且没有一个优先的候选人作为算法的初始进程,就需要先进行进程的选举。选举问题也称找领导人问题。问题是从具有同一状态的进程配置开始,最后到达一种配置状态,其中只有一个进程处于leader状态,而其它所有进程处于lost状态。如果要执行集中式算法,且没有一个优先的候选人作为算法的初始进程,就要举行进程的选举。 4.选举算法: 基于所使用的网络类型,人们提出了不同的分布式选举算法:(a)存储-转发网络,包括单向环、双向环、完全图、树和弦环,(b)广播网络? 大部分选举算法是基于全局优先级的,其中,每个进程(处理机)预先分配一个优先级。这些算法也称作extrema-finding 算法。对extrema-finding 算法的主要反对意见是一旦选中一个领导者时,就必须保证它是一个正确的选择,比如,从性能或可靠性的观点来看。 5.选举算法的性质: 1.每个进程有相同的局部算法; 2.算法是分散式的,即,进程的任意非空子集都能开始一次计算;在每次计算中,算法达到终止配置。在每个可达的终止配置中,只有一个进程处于领导人状态,而其它所有进程处于失败状态。最后一个性质可以弱化,只要求有一个进程处于领导者状态。 6.选举算法的分类: (1)基于环形拓扑的(环算法),其中每个进程不知道其它进程的优先级。 (2)基于全连接拓扑的,其中每个进程知道其它进程的优先级。 (3)基于非比较的,其中消息被“编码”在以轮(Round)表示的时间中,这种类型的算法只能工作在同步系统中。 前两个算法基于比较的,通过比较所有进程id和发送接收消息中的id选出一个领导者。 二、介绍几种常见的选举算法: 1.基于环形拓扑的选举算法: 算法基本过程: (1)n个进程按任意顺序排列在一个环上。 (2)进程的id不同,值越小的优先级越高。 (3)当任意进程Pi收到一个选举消息时,需要将其中的id与自己的id相比,并将较小者放入选举消息中向环的下游发送。 (4)当任意进程Pi收到包含自己id的选举消息时,可确认自己当选,这时它需要将这个消息通知所有其它的进程。 2.基于树算法的选举算法 如果网络的拓扑结构是树,或者网络的生成树可用,就可以使用网络的树算法进行选举。在树选举算法中,要求至少所有的叶子结点是算法的初始进程。为了让所有的叶子进程成为初始进程,我们可以增加一个唤醒阶段。想要启动选举的进程将消息wakeup扩散到所有进程中,布尔变量ws用于控制每个进程至多发送一次消息,变量wr用于对进程所接收的消息wakeup计数。当进程通过每条通道接收到消息wakeup时,进行最小标识的计算,并使每个进程判定。当进程进行判定时,就知道了领导人的标识。如果该标识与进程标识相等,它就称为领导人,否则就成为落选进程 3.环算法 (1)该环算法不适用令牌,假设进程按照物理或者逻辑顺序进行排序,那么进程都知道它的后继者当任何一个进程注意到协调者不工作时,它构造一个带有自己的进程号的election消息,并将消息发送给后继者。如果后继者崩溃了,发送者沿着此环跳过它的后继者发送给下一个进程,或者再下一个进程。直到找到一个正在运行的进程。 (2)在每一步中,发送者将自己的进程编号加入到消息中,以使自己成为协调者候选人之一。 (3)最终消息返回到发起这次选举的进程,当发起者收到一条包含自己进程编号的消息时,识别出来。此时消息编程coordinator消息,并再一次绕环运行,向所有进程通知谁是协调者(成员列表中进程号最大的那个) 4.Garcia-Molina的欺负算法(bully algorithm) 对于每个进程知道所有其他进程的优先级的系统而言,欺负算法是一个可靠的选举算法。同样,具有最高优先级的进程被选中。

文档评论(0)

ranfand + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档