分布式算法是在分布式系统上运行的算法。分布式系统是不共享内存的独立计算机的集合。每个处理器都有自己的内存,它们通过通信网络进行通信。网络中的通信是在一台机器上的进程中与另一台机器上的进程进行通信而实现的。分布式系统中使用的许多算法都需要协调器,该协调器执行系统中其他进程所需的功能。选举算法旨在选择协调器。
选举算法:
选举算法从处理器组中选择一个进程来充当协调器。如果协调器进程由于某些原因而崩溃,则将在其他处理器上选举一个新的协调器。选举算法基本上确定了应在哪里重新启动协调器的新副本。
选举算法假定系统中的每个活动进程都有一个唯一的优先级编号。具有最高优先级的过程将被选为新的协调员。因此,当协调器发生故障时,该算法将选择优先级最高的活动进程,然后将该编号发送到分布式系统中的每个活动进程。
对于分布式系统的两种不同配置,我们有两种选择算法。
1.恶霸算法–
此算法适用于每个进程都可以向系统中的每个其他进程发送消息的系统。
算法–假设进程P向协调器发送消息。
- 如果协调器在时间间隔T内没有响应,则假定协调器已失败。
- 现在,进程P将选举消息发送给具有高优先级编号的每个进程。
- 它等待响应,如果在时间间隔T没有人响应,则过程P选举自己为协调者。
- 然后,它将消息发送给所有优先级较低的进程,将其选为新的协调器。
- 但是,如果在时间T内从任何其他过程Q收到了答案,
- (I)过程P再次等待时间间隔T’,以从Q接收另一个消息,该消息已被选为协调者。
- (II)如果Q在时间间隔T’内没有响应,则认为它已经失败并且算法重新开始。
2.环算法–
此算法适用于组织成环的系统(逻辑上或物理上)。在此算法中,我们假设流程之间的链接是单向的,并且每个流程只能向其右侧的流程发送消息。该算法使用的数据结构是活动列表,该列表具有系统中所有活动进程的优先级数。
算法 –
- 如果进程P1检测到协调器故障,它将创建一个新的活动列表,该列表最初为空。它向右侧的邻居发送选举消息,并将数字1添加到其活动列表中。
- 如果进程P2从左侧的进程接收到选择的消息,它将以3种方式响应:
- (I)如果收到的消息在活动列表中不包含1,则P1将2添加到其活动列表中并转发该消息。
- (II)如果这是它收到或发送的第一条选举消息,则P1创建编号为1和2的新活动列表。然后发送选举消息1,后跟2。
- (III)如果进程P1收到自己的选举消息1,则P1的活动列表现在包含系统中所有活动进程的编号。现在,进程P1从列表中检测到最高优先级编号,并将其选举为新的协调者。