mongodb副本和分片(1)

概念

1.Replication

2.分片(Sharding)

  分片(sharding)是mongodb通过横向扩充存储节点机器的方式来支持大量数据集存储和高吞吐量数据操作的一种解决方案.

2.1 分片集群(Sharded Cluster)
2.1.1 组成

  1. 分片节点(shard):数据存储节点

  • 主分片(Primary Shard):集群中的每个数据库都有属于它自己的一个主分片用来存储那些没有分片的集合数据 当创建数据库的时候,mongos就会选择有最少数据的那个分片作为主分片,数据库的主分片是可以迁移的,但是迁移时会导致数据库无法访问,而且还会影响整个分片集群的操作
      2. 路由节点(mongos):查询节点,客户端应用程序和分片集群之间的接口
  •   3. 配置服务器(config servers):保存集群的配置信息
  • mongos缓存了配置服务器的配置信息,包括集群的块分布,分片节点的信息,以及权限信息,配置服务器还和mongodb管理分布式锁有关,当集群的元数据发生变化时,mongos就会更新它的缓存
  • 3.2版本之后,配置服务器可以以副本集的方式部署csrs,而在这之前,配置服务器如果要实现备份策略必须部署成sccc模式,而且自3.4版本,mongodb移除了对于sccc模式的配置服务器部署方式
  • 配置服务器存在主节点,
  • 配置服务器上存储了config数据库,存储了集群的元数据信息
      如下图:

      客户端应用只能通过路由节点连接分片集群并与之进行交互
2.1.2 片键(Shard Keys)

  分片将集合层面的数据分布在集群不同的分片节点上
  片键是mongodb分割集合数据到不同分片节点的依据,片键包含了集合中每个文档都具有的不变的一个或者多个字段,片键在数据分片之后是不能修改的,并且一个集合只能有一个片键,对于片键,集合必须在此片键上存在索引.在构建分片集群时,片键的选择对于集群的写入性能和查询性能会有很大的影响,通常,一个经过计算的片键会有一定的”随机性”,比如一个包含了其他字段加密哈希(例如 MD5或者SHA1)的片键,会使集群具有较好的写扩展性能.不过,随机的片键通常不会提供 查询隔离 的特性,而查询隔离同样是片键一个很重要的特性.

2.1.3 块(Chunks)
2.1.4

  

参考资料

  Replication
  Sharding