mongoDB——wiredTiger副本集模型的成员角色

      mongoDB的理解,现阶段在串联调查的知识点,以后开始解析代码,从逻辑层面来再次确认理解不正确或者认识不足的地方。


Replica-set

之前接触过的NoSQL数据库,比如:hbase,hive来说,为了数据的安全性和可扩展性考虑,都是是用master-slave的模型,master节点永远承担这read&write,slave就是冷备份,只有当master发生宕机的情况下,众多的slave中才会升格一个作为master,避免整个集群失效。


WiredTiger

而mongoDB的,WiredTiger存储引擎下,是去中心化的,没有所谓的master-slave,官方称为primary-secondary。

  • 在一个副本集中,有且只有一个primary,且拥有read&write权限。
  • 一个正常的secondary成员存储着primary所有数据的copy,secondary成员具有投票权和被选举权(根据设定而定)

而在一个副本集中,secondary成员还有以下2种分类:

  • 拥有被选举(Priority:1)

             即可以被选举成为primary,具有write权限。

  • 没有被选举(Priority:0)

            这种成员角色维护着primary的数据copy,但在故障切换中,永远不会成为primary。这类成员具有以下特性:

  1. 作为冷备份
  2. 可副本集中,确保可以选举出合适的primary
  3. 在replica-set的多个数据中心,通过网络分区,确保中心数据在故障切换中,可快速选举primary

       这类成员又细分为以下4类:

  • Hidden members

             这类成员也像其他成员一样,维持着primary数据的copy,不能成为primary,可参与投票,但没有相应read的权限,只是专注于报告需求或者备份。

  • Delayed members

            利用primary的oplog复制数据。好处是当发生人为错误,比如误删数据库的情况下,可以根据oplog进行恢复

  • Arbiters

            这类成员不对primary的数据进行copy,所以永远不会成为primary,唯一的用途就是在副本集中发生无法决策出primary时,快速选举出最适合做primary的节点

  • Non-voting members

           拥有primary数据的copy,可以接受来自客户端的read操作,也可以成为primary,但在选举中不具有投票权。


成为primary的先决条件是:在可投票的X个成员中,某个成员获得选票大于等于【(x/2)+1】.


  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值