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

来源:互联网 发布:软件商业计划书范文 编辑:程序博客网 时间:2024/06/10 05:32

      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
原创粉丝点击