●●● ●●●● ●●●●● ●●●● 欺负(Buly)算法 ●●●0● ●●●0 ●在某一时刻,一个进程只能从进程号比它小的进程那 里得到一个选举( ELECTION)消息,当它到达时, 接收者就发送回OK消息,表明它的存在并接管,然 后接收者主持选举(除非它正在主持别的选举)。 ●除了一个进程外即进程号最大的进程,其余进程都会 放弃选举,这个进程就是新的协调者,它将选举获胜 的消息发送给所有进程,告之自己是新的协调者。 若一个进程刚刚崩溃过,但又很快恢复,它主持选举, 若它刚好是当前运行进程中号最大的,它就会获得选 举的胜利,从而接管协调者的工作。 陈香兰@2007.3 分布式系统同步
陈香兰@2007.3.21 分布式系统同步(续) 7 欺负(Bully)算法 ⚫ 在某一时刻,一个进程只能从进程号比它小的进程那 里得到一个选举(ELECTION)消息,当它到达时, 接收者就发送回OK消息,表明它的存在并接管,然 后接收者主持选举(除非它正在主持别的选举)。 ⚫ 除了一个进程外即进程号最大的进程,其余进程都会 放弃选举,这个进程就是新的协调者,它将选举获胜 的消息发送给所有进程,告之自己是新的协调者。 ⚫ 若一个进程刚刚崩溃过,但又很快恢复,它主持选举, 若它刚好是当前运行进程中号最大的,它就会获得选 举的胜利,从而接管协调者的工作
●●● ●●●● ●●●●● ●●● 欺负(Buly)算法举例 ●●●0● ●●●0 ●一组由0~7号共8个进程组成,开始7号进程是 协调者,但是它突然发生了故障,进程4第 个注意到这一点,所以它向所有比它进程号大 的进程,即进程5、6、7发送选举消息 选举 选举 选举 陈香兰@2007.3 分布式系统同步
陈香兰@2007.3.21 分布式系统同步(续) 8 欺负(Bully)算法举例 ⚫ 一组由0~7号共8个进程组成,开始7号进程是 协调者,但是它突然发生了故障,进程4第一 个注意到这一点,所以它向所有比它进程号大 的进程,即进程5、6、7发送选举消息
●●● ●●●● ●●●●● ●●●● ●●●0● ●●●0 ●进程5和6接收消息后发送回OK。进程4接收到 第一个应答时就知道自己已经结束了,因为已 经有比它进程号大的进程即将接管它的工作成 为新的协调者,它就等待着看谁将在选举中获 胜。 A-( ok 以前的协调(b) 陈香兰@2007.3 者崩溃
陈香兰@2007.3.21 分布式系统同步(续) 9 ⚫ 进程5和6接收消息后发送回OK。进程4接收到 第一个应答时就知道自己已经结束了,因为已 经有比它进程号大的进程即将接管它的工作成 为新的协调者,它就等待着看谁将在选举中获 胜
●●● ●●●● ●●●●● ●●●● ●●●0● ●●●0 ●进程5和6都主持选举,每个进程仅把消息发送 给比自己进程号大的进程 选举 选举 选举 陈香兰@2007.3 分布式系统同步
陈香兰@2007.3.21 分布式系统同步(续) 10 ⚫ 进程5和6都主持选举,每个进程仅把消息发送 给比自己进程号大的进程
●●● ●●●● ●●●●● ●●●● ●●●0● ●●●0 ●进程6向进程5发OK消息,进程5收到OK消息 后停止选举,而这个时候进程6知道进程7已经 死了,所以,它将是获胜者 ok 陈香兰@2007.3 分布式系统同步
陈香兰@2007.3.21 分布式系统同步(续) 11 ⚫ 进程6向进程5发OK消息,进程5收到OK消息 后停止选举,而这个时候进程6知道进程7已经 死了,所以,它将是获胜者