• Mongodb复制集概念及相关参数


    一、复制集的作用

      (一)复制集的主要意义在于实现服务的高可用

      (二)他的视线依赖于两个方面的功能

      (1)数据写入时将数据迅速复制在另一个独立节点上

      (2)再接受写入的节点发生故障时自动选举出一个新的替代节点

      (三)在实现高可用的同时,复制集实现了其他的几个附加作用

      (1)数据分发。将数据从一个区域复制到另一个区域,减少另一个区域的读延迟(相当于在其他区域创建了一个从节点,方便其他区域读)

      (2)读写分离。不同的类型的压力分别在不同的节点上执行

      (3)异地容灾。在数据中心故障时候快速切花到异地

    二、典型复制集结构

      (一)一个主节点(promary):接受写入操作和选举时投票(一半以上)

      (二)两个(或多个)从节点(secondary):复制主节点上的新数据和选举时投票 (从节点只能读)

      (三)不推荐使用Arbiter(投票节点)。(很多时候会多出一个无数据节点作为投票节点。防止出现投票主机出现偶数的现象)推荐使用三数据节点

    三、数据是如何复制

      (一)当一个修改操作,无论是插入、更新、删除。达到主节点时,他对数据的操作被记录下来(经过一些必要的转换),这些记录被称为oplog(在mongo中是一个集合)。

      (二)从节点通过在主节点上打开一个tailable游标不断获取新进入主节点的oplong。并在自己的数据上回放。以此保持跟主节点数据一致

    四、通过选举完成故障恢复

      (一)具有投票权的节点之间两两互相发送心跳(默认每两秒发送一次)

      (二)当5次心跳未收到时判断为节点失联

      (三)如果失联的是主节点,从节点会发起选举,选出新的主节点

      (四)如果失联的从节点则不会产生新的选举

      (五)选举基于RAFT一致性算法实现,选举成功的必要条件是大多数投票节点存活

      (六)复制集中最多可以有50个节点但是具有选举全的节点最多有7个

    五、影响选举的因素

      (一)整个集群必须有大多数节点存活

      (二)没选举的主节点的节点必须

      (1)能够与多数节点建立连接  

      (2)具有较新的oplog(数据比较多)

      (3)具有较高的优先级(如果有配置)

    六、常见选项

      (一)复制集节点有以下常见的选项

      (1)是否具有投票权(v参数):有则参与投票。默认都具有

      (2)优先级(priority参数)优先级越高的节点越优先称为主节点。优先级为0的无法成为主节点

      (3)隐藏(hidden参数)复制数据,但是对应用不可见。隐藏节点可以具有投票权。但是优先级必须为0(可以作为备份数据,有时候不需要参数据的操作和业务程序的服务)

      (4)延迟(slaveDelay参数)复制N秒钟前的数据保持与主节点的时间差

  • 相关阅读:
    New Skateboard
    Mike and strings
    C语言异或运算在程序设计中的妙用
    快速排序
    贪心算法
    快速排序过程分析
    深度搜索C语言伪代码
    matlab 中“newff” 函数的参数设置
    一维小波分解与去噪重构
    matlab绘图(详细)(全面)
  • 原文地址:https://www.cnblogs.com/zshBlos/p/16149528.html
Copyright © 2020-2023  润新知