当前位置: 首页 > news >正文

MongoDB多节点集群原理 -- 复制集

前言

MongoDB是有高可用的方案的,就是我们最熟悉的多节点部署,而在MongoDB中,MongoDB多节点集群的专业术语叫做复制集

目录

高可用的概念

MongoDB复制集常见的用途

MongoDB节点

MongoDB节点类型

MongoDB节点选举和投票

选举中<大多数>的概念

节点之间数据复制过程

故障恢复选举过程

选举的前提条件

选举过程

选举过程中避免出现票数相等的僵局方法


高可用的概念

通俗的来讲,高可用就是保证不让数据库有掉线的情况

        使用多个节点,当一个节点倒下,另外一个节点会自动的替代进行服务

        实现原理: 数据写入会使用复制集将数据复制到另外节点上,写节点故障时,自动选举一个新的替代节点

MongoDB复制集常见的用途

1、高可用

2、可以对数据跨区域复制,解决用户跨区域访问数据较慢的问题,比如,如果我们可以在国外进行数据分布,就大大加速了国外当地访问我们MongoDB的速度

3、复制多个节点,做读写分离操作,对节点进行减压

MongoDB节点

MongoDB节点类型

MongoDB节点分为主节点、从节点、投票节点

主节点: 一般负责MongoDB数据的修改操作

从节点: 一般负责MongoDB数据的读取操作

投票节点:就是专一为MongoDB选举投票使用,本身节点没有数据,不能参加选举

MongoDB节点选举和投票

主节点和从节点既有投票权又有选举权

投票节点只有投票权

选举基于EAFT一致性算法,选举成功的条件是大多数投票节点存活,并且其中一个节点获得大多数投票

故障节点既没有选举权也没有投票权

选举中<大多数>的概念

有N个节点,那么大多数就是要大于等于 \frac{N}{2} + 1 

所有根据计算,投票节点至少要有3个,才会出现一个节点有大多数投票数选举成功

节点之间数据复制过程

1、当对主节点进行修改操作的时候,数据的修改操作日志会被记录下来,放到集合中,这个集合称为oplog

2、通过一个线程监听这个集合变动,有变动就会读取到从节点,在从节点上进行还原

故障恢复选举过程

选举的前提条件

1、具有投票权的节点之间相互发送心跳,当5次心跳都未收到判断节点失联
2、只有失联节点是主节点才会发起选举

选举过程

只有失联节点是主节点才会发起选举,从节点会发起选举,选出新的主节点

选举基于EAFT一致性算法,选举成功的条件是大多数投票节点存活,并且其中一个节点获得大多数投票

在选举过程中基本上不会出现票数相等的僵局的,这是经过程序优化过的

复制集中最多可以有50个节点,但具有投票权的节点最多7个

选举过程中避免出现票数相等的僵局方法

随机延迟机制

多个从节点检测到主节点失联之后,会有一个随机延迟机制,随机等待一下再发起选举,避免多个从节点同时发起选举出现竞争情况

优先级权重

同时设置从节点选举的时候的优先级权重,即使出现多个从节点进行竞争,在优先级权重的加持下也基本上不可能产生两个同时发起选举的从节点最终票数相同无法选举出主节点的僵局

http://www.xdnf.cn/news/1159543.html

相关文章:

  • 《杜甫传》读书笔记与经典摘要(一)
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • 【算法训练营Day15】二叉树part5
  • LVS-----TUN模式配置
  • 【LeetCode刷题指南】--反转链表,链表的中间结点,合并两个有序链表
  • 【原创】微信小程序添加TDesign组件
  • tabBar设置底部菜单选项、iconfont图标(图片)库、模拟京东app的底部导航栏
  • 零基础学习性能测试第三章:执行性能测试
  • Windows CMD(命令提示符)中最常用的命令汇总和实战示例
  • 30天打牢数模基础-SVM讲解
  • Python 单例模式几种实现方式
  • Dify 1.6 安装与踩坑记录(Docker 方式)
  • ZooKeeper学习专栏(二):深入 Watch 机制与会话管理
  • 【单片机外部中断实验修改动态数码管0-99】2022-5-22
  • 大语言模型:人像摄影的“达芬奇转世”?——从算法解析到光影重塑的智能摄影革命
  • Vuex 核心知识详解:Vue2Vue3 状态管理指南
  • 【设计模式C#】享元模式(用于解决多次创建对象而导致的性能问题)
  • TypeScript 中替代 Interface 的方案
  • 17.TaskExecutor与ResourceManager交互
  • 对粒子群算法的理解与实例详解
  • 系统思考:整体论
  • 5.2.4 指令执行过程
  • 基于FPGA的多级流水线加法器verilog实现,包含testbench测试文件
  • Muon小记
  • 【unitrix】 6.9 减一操作(sub_one.rs)
  • 数据结构与算法汇总
  • Twisted study notes[2]
  • Node.js worker_threads 性能提升
  • ARM 学习笔记(三)
  • C 语言经典编程题实战:从基础算法到趣味问题全解析