我正在探索集群计算中的各种架构。一些受欢迎的是:
在Master-slave中,通常的方法是将一台机器设置为主机和主机。一堆机器作为奴隶控制的主人。一个特别的算法让我感兴趣。它被称为Leader-Election Algo,它在选择哪些机器成为主机时具有一定的随机性。
我的问题是 - 为什么有人想以这种方式选择主机?与手动选择机器作为主机相比,这种方法有什么优势?
答案 0 :(得分:12)
这种算法有一些优点:
动态的另一个好方法 选择领导者,如果其中之一 节点有重大故障(例如 PC正在关闭)你有其他的 选择,没有必要 手动更改领导者。
如果你手动选择节点应该 手动配置所有其他节点 使用这个节点,并设置他们的 手动的时间,...但是这个 算法将帮助您处理 时间问题。
答案 1 :(得分:2)
使用这种算法的主要思想是摆脱额外的配置,增加某种灵活性,以及整个系统的稳定性。但通常(在HPC / MPI应用程序中)手动选择主节点。
假设您的主选择算法非常简单 - 获取可用系统列表并选择具有最高IP地址的系统。在这种情况下,您可以轻松地在任何节点上启动新进程,它将自动找到主节点。
这种想法的一个很好的例子是WCCP协议“指定代理”选择算法,其中代理的数量可以是灵活的,并且在运行时选择主节点。
答案 2 :(得分:2)
考虑节点网络,始终拥有一个领导节点至关重要。如果当前的领导者去世,那么网络有些人必须选择另一个领导者。鉴于这种情况和要求,有两种可能的方法。
中央系统方法,其中有一个中心节点 决定谁将成为领导者。如果 现在的领导人死了,然后这个 中心节点将决定谁 应该接管领导角色。 但这是单点故障, 那是中心节点 负责决定领导者, 如果现任领导人去世,那么就没有人选择领导人了。
我们可以在同一场景中 使用分布式领导者选择,如 在所有节点达成共识 谁应该是领导者。因此,我们不需要有一个中心节点来决定领导者应该是谁,从而消除单点故障。当领导节点死亡时,将有一种方法来检测节点故障,然后每个节点将启动分布式领导者选择算法,并相互达成选举领导者的共识。
因此,简而言之,当您拥有一个没有中央控制的系统时,可能是因为系统可以在没有单点故障的情况下进行扩展,在这些系统中选择某个节点时,会使用领导者选举算法。