算法【bully 霸道算法】

一、简介

       bully算法,也叫霸道算法。遵循谁拳头大谁当老大原则,即集群中节点ID值最大的那个则会被选为主节点。

二、说明

       bully算法在选主过程中,会涉及到以下三种消息: 

       

       bully算法底层选主流程图: 

     

      【触发选主时机】

       2.1、错误节点恢复。

       2.2、检测到master节点发生故障,如上图:

                流程如下:

  1. 集群中所有节点都会判断自己的Id是否最大的,如果是最大的,则会像其他节点直接发送Victory,进行宣誓主权。
  2. 如果自己并不是当前存活节点最大的,则需要向比自己大的节点发送Election消息,并等待其他节点的回复。
  3. 在规定的时间范围内,若没有收到任何节点的Alive消息,则会认为自己成为主节点,并像其他节点发送Victory,宣誓自己是老大了;若收到了比自己大的节点回复的Alive消息,则自己会等待Victory的通。
  4. 若收到了比自己小的节点发来的Election消息,则会回复个Alive消息过去,告诉它我比大。

三、优缺点

       【优点】:霸道简单,选举速度快,算法复杂度低、简单容易实现。

       【缺点】:1、所有节点需要得知每个节点的相关信息(比如图例中的id值),需要额外的信息存储。

                         2、若一个ID值比现在集群中master大的节点新加入或者故障恢复,则会触发新一轮的选主,如果这台节点不稳定或者频繁退出,则会出现当前分布式系统频繁的进行切换选主。     

 

posted on 2023-10-31 16:53  木乃伊人  阅读(100)  评论(0编辑  收藏  举报

导航