分布式选举算法

Bully 算法

在所有活着的节点中,选取 ID 最大的节点作为主节点。

优点

选举速度快、算法复杂度低、简单易实现。

缺点
  1. 需要每个节点有全局的节点信息,因此额外信息存储较多
  2. 任意一个比当前主节点 ID 大的新节点或节点故障后恢复加入集群的时候,都可能会触发重新选举,成为新的主节点,如果该节点频繁退出、加入集群,就会导致频繁切主。

Raft 算法

获得投票最多的节点成为主。

优点

选举速度快、算法复杂度低、易于实现的

缺点

要求系统内每个节点都可以相互通信,且需要获得过半的投票数才能选主成功,因此通信量大。

该算法选举稳定性比 Bully 算法好,这是因为当有新节点加入或节点故障恢复后,会触发选主,但不一定会真正切主,除非新节点或故障后恢复的节点获得投票数过半,才会导致切主。

ZAB 算法

少数服从多数,ID 大的节点优先成为主。

优点

稳定性较好,当有新节点加入或者节点故障后不一定切主。

缺点
  1. 采用广播方式发送信息,若节点中有 n 个节点,每个节点同时广播,则集群中信息量为 n*(n-1) 个消息,容易出现广播风暴
  2. 除了投票,还增加了对比节点 ID 和数据 ID,这就意味着还需要知道所有节点的 ID 和数据 ID,所以选举时间相对较长。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容