领导者选举算法

时间:2011-01-16 17:45:10

标签: algorithm distributed-computing cluster-computing master-slave

我正在探索集群计算中的各种架构。一些受欢迎的是:

  1. 主 - 从
  2. RPC
  3. ...
  4. 在Master-slave中,通常的方法是将一台机器设置为主机和主机。一堆机器作为奴隶控制的主人。一个特别的算法让我感兴趣。它被称为Leader-Election Algo,它在选择哪些机器成为主机时具有一定的随机性。

    我的问题是 - 为什么有人想以这种方式选择主机?与手动选择机器作为主机相比,这种方法有什么优势?

3 个答案:

答案 0 :(得分:12)

这种算法有一些优点:

  1. 选择节点作为领导者 动态完成,例如你 可以选择最高的节点 表现,以及新的到来 节点可能是更好的选择。
  2. 动态的另一个好方法 选择领导者,如果其中之一 节点有重大故障(例如 PC正在关闭)你有其他的 选择,没有必要 手动更改领导者。

  3. 如果你手动选择节点应该 手动配置所有其他节点 使用这个节点,并设置他们的 手动的时间,...但是这个 算法将帮助您处理 时间问题。

  4. 例如(不太相关)为什么 在大多数情况下使用DHCP?太多 配置将由此处理 算法。

答案 1 :(得分:2)

使用这种算法的主要思想是摆脱额外的配置,增加某种灵活性,以及​​整个系统的稳定性。但通常(在HPC / MPI应用程序中)手动选择主节点。

假设您的主选择算法非常简单 - 获取可用系统列表并选择具有最高IP地址的系统。在这种情况下,您可以轻松地在任何节点上启动新进程,它将自动找到主节点。

这种想法的一个很好的例子是WCCP协议“指定代理”选择算法,其中代理的数量可以是灵活的,并且在运行时选择主节点。

答案 2 :(得分:2)

考虑节点网络,始终拥有一个领导节点至关重要。如果当前的领导者去世,那么网络有些人必须选择另一个领导者。鉴于这种情况和要求,有两种可能的方法。

  1. 中央系统方法,其中有一个中心节点 决定谁将成为领导者。如果 现在的领导人死了,然后这个 中心节点将决定谁 应该接管领导角色。 但这是单点故障, 那是中心节点 负责决定领导者, 如果现任领导人去世,那么就没有人选择领导人了。

  2. 我们可以在同一场景中 使用分布式领导者选择,如 在所有节点达成共识 谁应该是领导者。因此,我们不需要有一个中心节点来决定领导者应该是谁,从而消除单点故障。当领导节点死亡时,将有一种方法来检测节点故障,然后每个节点将启动分布式领导者选择算法,并相互达成选举领导者的共识。

  3. 因此,简而言之,当您拥有一个没有中央控制的系统时,可能是因为系统可以在没有单点故障的情况下进行扩展,在这些系统中选择某个节点时,会使用领导者选举算法。