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