整理mongodb文档:副本集成员可以为偶数
个人博客
整理mongodb文档:副本集成员可以为偶数
想了下,仲裁节点还是不想直接说太多,怕有的同学想太多,且本身副本集就偏向运维的,新手基本也没什么权限操作,就不多废话了。
文章概叙
文章从MongoDB是否可以用偶数节点切入,讲解关于仲裁节点以及节点选举。
今天所要讲解的是关于ReplSet成员必须为奇数,今天跟一个朋友讨论时候,他提到了副本集的成员不可以为偶数的观点,我百度了下,也有不少的文章这么提及,但没有说到为什么,由于试错的成本也不高,所以就直接做一个DEMO演示下,分别设置四个节点到三个节点再到两个节点的情况下,主节点出问题的情况下,是否会导致所有的副节点无法选举出主节点。
首先,先来一个四个节点的测试
const config =
{_id: 'replSetTest60000',members:[{ _id: 0, host: '127.0.0.1:60001' },{ _id: 1, host: '127.0.0.1:60002' },{ _id: 2, host: '127.0.0.1:60003' },{ _id: 3, host: '127.0.0.1:60004' },
]
}
rs.reconfig(config)
接着,停止60001节点,使其发起主节点的选举,可以看到,60002节点已经被选举为了主节点
四节点下是可以正常选举的,此时,再重新设置我们的副本集,模拟下三节点下的选举。
const config =
{_id: 'replSetTest60000',members:[{ _id: 0, host: '127.0.0.1:60001' },{ _id: 1, host: '127.0.0.1:60002' },{ _id: 1, host: '127.0.0.1:60003' }]
}
rs.reconfig(config)
在使用rs.reconfig 指令重新设置下我们的副本集后,废弃掉60004的服务,记得重新启动60001的服务。
因为当前的主节点是60002节点,所以我们停止掉60002节点的服务,再去查看60001是否被选举为了主节点
依旧可以确定,在三个节点的情况下,当出现选举的时候,不会导致所有的节点都是Secondary。
最后的测试是只有两个节点的,虽然各位都知道副本集不允许只有两个节点存在,但吃饱了没事干,还是测试下。
当前保留了60001节点以及60002节点进行测试,在更新了副本集的配置之后,停用了60003以及60004的服务。
接着停止60001的服务
可以看到,60001的节点停止之后,主节点消失了,而60002节点也没有了转正的机会。
所以,我们可以断定了节点数只能不能为两个,但是没有不能为偶数的限制
仲裁节点
为了解决上文提到的两个节点的问题,便有了仲裁节点的接入,首先了解下关于仲裁节点的概念
在某些情况下(例如有一个主节点和一个从节点,但由于成本约束无法添加另一个从节点),你可以在副本集中添加一个仲裁节点。仲裁节点没有数据集的副本,并且不能成为主节点。然而,仲裁节点可以参与主节点选举。一个仲裁节点只有 1 票选举权。
简单来说,仲裁节点不能保存数据,但是发起投票的时候,他作为一个仲裁者的身份,能决定谁成为主节点。
接着,添加一个仲裁节点到我们的项目中,正常情况下,仲裁节点是要第三方机子,防止主节点跟仲裁节点一起停了。
rs.addArb("127.0.0.1:27019")
在某些场景下, 一个副本集中的两个节点可能会认为它们是主节点,但至多,他们中的一个将能够完成写关心级别为[{ w: “majority” }]的写操作。可以完成 [{ w: “majority” }]写的节点是当前主节点,而另一个节点是原先的主节点,通常是由于网络分区导致它还没有意识到自己的降级。
当这种情况发生时,连接到原先主节点的客户端尽管已经请求了读偏好Primary,但可能还会观察到过时的数据,并且对原先主节点新写的操作最终将回滚掉。
网络分区只在分布式集群中,节点之间由于网络不通,导致集群中节点形成不同的子集,子集中节点之间网络互通,而子集与子集之间网络不通。
注意点
副本集的仲裁节点,不需要了解很多,毕竟项目上线之后,你不用对他做啥操作,建议了解下内容即可,副本集也一样,很多时候你没权操作到,但是很多面试人家会问到相关的知识点。
相关文章:

整理mongodb文档:副本集成员可以为偶数
个人博客 整理mongodb文档:副本集成员可以为偶数 想了下,仲裁节点还是不想直接说太多,怕有的同学想太多,且本身副本集就偏向运维的,新手基本也没什么权限操作,就不多废话了。 文章概叙 文章从MongoDB是否可以用偶数…...
PHP - 遇到的Bug - 总结
BUG记录1 [问题] 除数为0,不符合规则 [问题描述] // 报错信息 DivisionByZeroError:is thrown when an attempt is made to divide a number by zero.// example public class Example {public static void Main(){int number1 3000;int number2 0;tr…...

统计子岛屿的数量
统计子岛屿 题目描述 给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只包含 0 (表示水域)和 1 (表示陆地)。一个 岛屿 是由 四个方向 (水平或者竖直)上相邻的 1 组成的区域。任何矩阵以外…...

IntelliJ IDEA Maven 项目的依赖分析
在一个 maven 的项目中,我们需要知道我们的项目中使用的包可能有哪些冲突。 这个在 IntelliJ IDEA 中提供了贴心的查看。 选择 Maven 项目中的分析依赖。 随后,IntelliJ IDEA 将会打开一个依赖分析的标签页。 在这个标签页中,我们可以看到…...

数学建模、统计建模、计量建模整体框架的理解以及建模的步骤
数学建模、统计建模、计量建模整体框架的理解以及建模的步骤 引言正文模型的设定模型的估计建模中可能遇到的四种数据类型 模型的检验模型的应用 最后 引言 这篇博客主要写给统计或者数学专业的小白,以供快速上手建模比赛;本人将在这里整合参加建模比赛…...
WaitGroup原理分析
背景 在实际业务开发中,我们会遇到以下场景:请求数据库,批量获取1000条数据记录后,处理数据 为了减少因一次批量获取的数据太多,导致的数据库延时增加,我们可以把一次请求拆分成多次请求,并发去…...
java直播源码:如何使用Java构建一个高效的直播系统
Java直播源码是一种用于实现实时视频流传输的技术,它可以将视频流从一个地方传送到另一个地方。它使用Java语言编写,可以支持多种视频格式,如MPEG、H.264等。 Java直播源码是一种用于实现实时视频流传输的技术,它可以将视频流从一…...

Websocket获取B站直播间弹幕教程——第二篇、解包/拆包
教程一、Websocket获取B站直播间弹幕教程 — 哔哩哔哩直播开放平台 1、封包 我们连接上B站Websocket成功后,要做两件事情: 第一、发送鉴权包。第二、发送心跳包,每30秒一次,维持websocket连接。 这两个包不是直接发送过去&…...

膝关节检测之1设计目标手势与物体交互的动画
原来只用unity自带的IK,发现背部不能动,且手和手指的移动和旋转试了好像没法通过animation实现(加入关键帧并修改最终状态的数值后播放没有变化,确定最终关键帧的数值已经改了的)。看资料,发现final IK&…...

canvas力导布局
老规矩,先上效果图 <html><head><style>* {margin: 0;padding: 0;}canvas {display: block;width: 100%;height: 100%;background: #000;}</style> </head><body><canvas id"network"></canvas> </…...

【网络安全】「漏洞原理」(二)SQL 注入漏洞之理论讲解
前言 严正声明:本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。 【点击此处即可获…...
JavaScript中类的学习
一、JavaScript中的类 1.什么是类 类描述了一种代码的组织结构形式,不同的语言中对其实现形式各有差异。JavaScript中的类Class实际是一种描述对象之间引用关系的语法糖。 在Class语法糖出现之前,我们想重用一个功能模块,通常是用一个函数来…...

1600*A. Linova and Kingdom(DFS优先队列贪心)
Problem - 1336A - Codeforces Linova and Kingdom - 洛谷 解析: 开始认为分情况讨论 k 小于等于叶子结点和大于叶子结点的情况,然后选择深度最深的叶子结点和子孙数量最小的结点,但是发现如果把某一个非叶子结点选取,那么其子孙…...
gitlab git lfs的替代软件整理汇总及分析
文章目录 前言替代软件分析git-annexgit-fatgit-symgit-meida 总结 前言 git-lfs科普 Git LFS(Large File Storage)是一个Git扩展,用于管理大型文件。Git LFS通过将大型文件存储在Git仓库之外,从而加快了Git操作的速度。它使用指…...

IDEA 2023.2.2图文安装教程及下载
IDE 系列的第二个年度更新现已发布,涵盖 IntelliJ IDEA、WebStorm、PyCharm、DataGrip、GoLand、DataSpell 以及 All Products Pack 订阅中包含的其他工具。该版本还包括多项用户体验增强功能,例如 Search Everywhere(随处搜索)中…...

第六届“中国法研杯”司法人工智能挑战赛
解锁司法科技的未来 “中国法研杯”司法人工智能挑战赛(Legal AI Challenge,简称LAIC),是面向法院侧人工智能应用领域唯一权威比赛,大赛愿景是在拥有全球最大规模司法数据的中国,实现法律界、学术界、产业界…...

Springcloud中间件-----分布式搜索引擎 Elasticsearch
该笔记是根据黑马程序员的课来自己写了一遍的,b站有对应教程和资料 第一部分 第二部分 第三部分 预计看完跟着练习5小时足够 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能ÿ…...
基于深度学习的目标检测和语义分割:机器视觉中的最新进展
基于深度学习的目标检测和语义分割是机器视觉领域的两个重要任务,它们在图像处理、自动驾驶、医学影像分析和智能视频监控等应用中发挥着关键作用。以下是这两个领域的最新进展: 目标检测(Object Detection): 一阶段检…...

微信小程序报错request:fail -2:net::ERR_FAILED(生成中间证书)
微信小程序报错request:fail -2:net::ERR_FAILED-生成中间证书 前言一、检查网站ssl证书二、生成证书方法1.获取中间证书手动合并1.进入网站:[https://www.myssl.cn/tools/downloadchain.html](https://www.myssl.cn/tools/downloadchain.html)2.点击下一步3.手动合…...
Ubuntu更改时区
sudo apt install tzdata 进行安装时区,有很多时区可供选择。 然后执行:tzselect rootd75c94dcd226:/# date 2023年 10月 11日 星期三 06:25:12 UTC rootd75c94dcd226:/# tzselect Please identify a location so that time zone rules can be set correctly. Ple…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...