用通俗易懂的方法解释MongoDB的选举机制
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,如果主节点宕机或故障了,其他的节点就会选出一个新的主节点。选举的过程可以由任意的非主节点发起,然后根据优先级和Bully算法选举出新的主节点。在选举出主节点之前,整个集群服务是只读的,不能执行写入操作
千家信息网最后更新 2024年09月22日用通俗易懂的方法解释MongoDB的选举机制如果主节点宕机或故障了,其他的节点就会选出一个新的主节点。选举的过程可以由任意的非主节点发起,然后根据优先级和Bully算法选举出新的主节点。在选举出主节点之前,整个集群服务是只读的,不能执行写入操作。
非仲裁节点都有一个优先级的设置,范围为0--100,越大的值越能优先成为主节点。默认情况下为1,如果值为0则不能成为主节点。
Bully算法是一种协调者(主节点)竞选算法,主要思想是集群的每个成员都可以声明它是主节点并通知其他节点。其算法介绍如下:
当任何一个进程发现协调者不响应请求时,他发起一次选举,选举过程如下:
(1).P进程向所有编号比他大的进程发送一个election消息;
(2).如果无人响应,则P获胜,成为协调者
(3).如果编号比他大的进程响应,则由响应者接管选举工作,P的工作完成。
任何一个时刻,一个进程只能从编号比他小的进程接受election消息,当消息到达时,接受者发送一个OK消息给发送者,表明它在运行,
接管工作。
最终除了一个进程外,其他进程都放弃,那个进程就是新的协调者。
他将获胜消息发送给其他所有进程,通知他们新的协调者。
当一个以前崩溃的进程恢复过来了后,它将主持一场选举。如果该进程恰好是当前运行进程中编号最大的进程,它将获胜,故此成为
欺负算法。
举例来说,当主节点故障或宕机之后,有资格成为主节点的从节点就会向其他节点发起一个选举提议,基本的意思就是"我觉得我能成为主节点,你们觉得呢?",
而其他节点在收到这个选举提议后会做如下判断(三个条件):
(1).副本集中是否有其他节点已经是主节点了?
(2).自己的数据是否比请求成为主节点的从节点上的数据更新呢?
(3).副本集中的其他节点的数据是否比请求成为主节点的从节点的数据更新呢?
如果这三个条件中只有有一个条件成立,那么都会认为对方的提议不可行,于是将返回一个消息给请求节点说"我觉得你成为主节点不合适,你退出选举吧!",
请求节点只要收到其他任何一个节点返回不合适,都会立刻退出选举,并将自己保持在从节点的角色;但是如果上面三个条件都是否定的,那么就会在返回包中回复说"我觉得你可以成为主节点",也就是把票投给这个请求节点,投票环节结束后就会进入选举的第二阶段。获得认可的请求节点会向其他节点发送一个确认的请求包,基本意思就是"我要宣布自己是主节点了,有人反对吗?",如果在这次确认过程中其他节点都没反对,那么请求节点就将自己升级为主节点,所有节点在30秒内不再进行其他选举投票决定,如果有节点在确认环节反对请求节点做主节点,那么请求节点在收到反对回复后,会保持自己的节点角色依然是从节点,然后等待下一次选举。
那优先级是如何影响到选举的呢?选举机制会尽自己最大努力让优先级最高的节点成为主节点,即使副本集中已经选举出了比较稳定的,但优先级比较低的主节点。
优先级比较低的节点会短暂地作为主节点运行一段时间,但不能一直作为主节点。也就是说如果优先级比较高的节点在 Bully算法投票中没有胜出,副本集运行一段时间后会继续发起选举,直到优先级最高的节点成为主节点为止。
由此可见,优先级的设置参数在选举过程中是很重要的,要么不设置,保持都是优先级为1的公平状态,要么可以把性能比较好的几台Server设置的优先级更高一些。
非仲裁节点都有一个优先级的设置,范围为0--100,越大的值越能优先成为主节点。默认情况下为1,如果值为0则不能成为主节点。
Bully算法是一种协调者(主节点)竞选算法,主要思想是集群的每个成员都可以声明它是主节点并通知其他节点。其算法介绍如下:
当任何一个进程发现协调者不响应请求时,他发起一次选举,选举过程如下:
(1).P进程向所有编号比他大的进程发送一个election消息;
(2).如果无人响应,则P获胜,成为协调者
(3).如果编号比他大的进程响应,则由响应者接管选举工作,P的工作完成。
任何一个时刻,一个进程只能从编号比他小的进程接受election消息,当消息到达时,接受者发送一个OK消息给发送者,表明它在运行,
接管工作。
最终除了一个进程外,其他进程都放弃,那个进程就是新的协调者。
他将获胜消息发送给其他所有进程,通知他们新的协调者。
当一个以前崩溃的进程恢复过来了后,它将主持一场选举。如果该进程恰好是当前运行进程中编号最大的进程,它将获胜,故此成为
欺负算法。
举例来说,当主节点故障或宕机之后,有资格成为主节点的从节点就会向其他节点发起一个选举提议,基本的意思就是"我觉得我能成为主节点,你们觉得呢?",
而其他节点在收到这个选举提议后会做如下判断(三个条件):
(1).副本集中是否有其他节点已经是主节点了?
(2).自己的数据是否比请求成为主节点的从节点上的数据更新呢?
(3).副本集中的其他节点的数据是否比请求成为主节点的从节点的数据更新呢?
如果这三个条件中只有有一个条件成立,那么都会认为对方的提议不可行,于是将返回一个消息给请求节点说"我觉得你成为主节点不合适,你退出选举吧!",
请求节点只要收到其他任何一个节点返回不合适,都会立刻退出选举,并将自己保持在从节点的角色;但是如果上面三个条件都是否定的,那么就会在返回包中回复说"我觉得你可以成为主节点",也就是把票投给这个请求节点,投票环节结束后就会进入选举的第二阶段。获得认可的请求节点会向其他节点发送一个确认的请求包,基本意思就是"我要宣布自己是主节点了,有人反对吗?",如果在这次确认过程中其他节点都没反对,那么请求节点就将自己升级为主节点,所有节点在30秒内不再进行其他选举投票决定,如果有节点在确认环节反对请求节点做主节点,那么请求节点在收到反对回复后,会保持自己的节点角色依然是从节点,然后等待下一次选举。
那优先级是如何影响到选举的呢?选举机制会尽自己最大努力让优先级最高的节点成为主节点,即使副本集中已经选举出了比较稳定的,但优先级比较低的主节点。
优先级比较低的节点会短暂地作为主节点运行一段时间,但不能一直作为主节点。也就是说如果优先级比较高的节点在 Bully算法投票中没有胜出,副本集运行一段时间后会继续发起选举,直到优先级最高的节点成为主节点为止。
由此可见,优先级的设置参数在选举过程中是很重要的,要么不设置,保持都是优先级为1的公平状态,要么可以把性能比较好的几台Server设置的优先级更高一些。
节点
选举
进程
优先级
消息
算法
协调者
副本
数据
条件
过程
运行
三个
就是
工作
投票
合适
最大
最高
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
宝山区第三方网络技术服务代理商
数据库逻辑主键
防范电信网络安全教育手抄报
数据库权限
现代数据库是什么
直销软件开发平台
为何梦幻西游手游版服务器不一样
还原数据库到新库
网上商城数据库设计
国有企业服务器托管合同
江西服务器防火墙配置
单位网络安全宣传教育情况
数据库公司哪个好
魔兽不同服务器交易
服务器有多个网卡ip怎么配置
软件开发团队需要哪些人员
怎么打开安装好的数据库
网络安全插图简笔画
外网连不上学校服务器
网络安全范文
软件开发者面试
网络安全宣传周相关宣传资料
一台服务器虚拟化
数据库中sqlhelper
深圳3d游戏软件开发公司
河南蔬菜软件开发
web服务器绿色版
java 文件 数据库
黄岛区安卓软件开发哪家靠谱
服务器生存2游戏视频