三种典型的算法代表了三种不同的选举思想
一,论资排辈 bully
即在所有活着的节点中,选取 ID 最大的节点作为主节点。
每个节点都需要确认自己是否是存活节点中最大的节点,
如果是则向其他节点发Victory信息,
如果不是则向其他节点发Election信息,等待其他节点回复
若在给定的时间范围内,本节点没有收到其他节点回复的 Alive 消息,则认为自己成为主节点,并向其他节点发送 Victory 消息,宣誓自己成为主节点;若接收到来自比自己 ID 大的节点的 Alive 消息,则等待其他节点发送 Victory 消息;
若本节点收到比自己 ID 小的节点发送的 Election 消息,则回复一个 Alive 消息,告知其他节点,我比你大,重新选举。
算法难度低,只需要把但是占用的空间大,需要每个节点中保存全局信息。
典型应用 mongodb
二,民主选举 Raft 算法