我的编程空间,编程开发者的网络收藏夹
学习永远不晚

用通俗易懂的方法解释MongoDB的选举机制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

用通俗易懂的方法解释MongoDB的选举机制

如果主节点宕机或故障了,其他的节点就会选出一个新的主节点。选举的过程可以由任意的非主节点发起,然后根据优先级和Bully算法选举出新的主节点。在选举出主节点之前,整个集群服务是只读的,不能执行写入操作。
非仲裁节点都有一个优先级的设置,范围为0--100,越大的值越能优先成为主节点。默认情况下为1,如果值为0则不能成为主节点。
Bully算法是一种协调者(主节点)竞选算法,主要思想是集群的每个成员都可以声明它是主节点并通知其他节点。其算法介绍如下:

当任何一个进程发现协调者不响应请求时,他发起一次选举,选举过程如下:
(1).P进程向所有编号比他大的进程发送一个election消息;
(2).如果无人响应,则P获胜,成为协调者
(3).如果编号比他大的进程响应,则由响应者接管选举工作,P的工作完成。
   任何一个时刻,一个进程只能从编号比他小的进程接受election消息,当消息到达时,接受者发送一个OK消息给发送者,表明它在运行,
接管工作。
最终除了一个进程外,其他进程都放弃,那个进程就是新的协调者。
    他将获胜消息发送给其他所有进程,通知他们新的协调者。
    当一个以前崩溃的进程恢复过来了后,它将主持一场选举。如果该进程恰好是当前运行进程中编号最大的进程,它将获胜,故此成为
欺负算法。


举例来说,当主节点故障或宕机之后,有资格成为主节点的从节点就会向其他节点发起一个选举提议,基本的意思就是“我觉得我能成为主节点,你们觉得呢?”,
而其他节点在收到这个选举提议后会做如下判断(三个条件):
(1).副本集中是否有其他节点已经是主节点了?
(2).自己的数据是否比请求成为主节点的从节点上的数据更新呢?
(3).副本集中的其他节点的数据是否比请求成为主节点的从节点的数据更新呢?
如果这三个条件中只有有一个条件成立,那么都会认为对方的提议不可行,于是将返回一个消息给请求节点说“我觉得你成为主节点不合适,你退出选举吧!”,
请求节点只要收到其他任何一个节点返回不合适,都会立刻退出选举,并将自己保持在从节点的角色;但是如果上面三个条件都是否定的,那么就会在返回包中回复说“我觉得你可以成为主节点”,也就是把票投给这个请求节点,投票环节结束后就会进入选举的第二阶段。获得认可的请求节点会向其他节点发送一个确认的请求包,基本意思就是“我要宣布自己是主节点了,有人反对吗?”,如果在这次确认过程中其他节点都没反对,那么请求节点就将自己升级为主节点,所有节点在30秒内不再进行其他选举投票决定,如果有节点在确认环节反对请求节点做主节点,那么请求节点在收到反对回复后,会保持自己的节点角色依然是从节点,然后等待下一次选举。
那优先级是如何影响到选举的呢?选举机制会尽自己最大努力让优先级最高的节点成为主节点,即使副本集中已经选举出了比较稳定的,但优先级比较低的主节点。
优先级比较低的节点会短暂地作为主节点运行一段时间,但不能一直作为主节点。也就是说如果优先级比较高的节点在 Bully算法投票中没有胜出,副本集运行一段时间后会继续发起选举,直到优先级最高的节点成为主节点为止。

由此可见,优先级的设置参数在选举过程中是很重要的,要么不设置,保持都是优先级为1的公平状态,要么可以把性能比较好的几台Server设置的优先级更高一些。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

用通俗易懂的方法解释MongoDB的选举机制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql无法成功启动服务的解决方法(通俗易懂!)

目录mysql 安装成功后,启动失败,提示如下:尝试以下步骤解决方法:问题分析:总结:MySQL 安装成功后,启动失败,提示如下:或者是尝试以下步骤1.如果在mysql的安装路径中有没有配置文件如果没有配置文件则自己手动创建一个,文件名为
2023-02-15

Win8启动了保护机制不让用户轻易替换系统文件的解决方法

Win8为了保护用户系统的稳定与安全,特别启动了保护机制,不让用户轻易地替换系统文件,这对于喜欢美化Win8系统的朋友带来了麻烦,特别是在修改系统主题的时候,遇到了系统文件不让操作的问题,而今天就要为你们推荐一编程客栈款小工具—
2023-06-06

编程热搜

目录