(目录)

MongoDB的集群架构

MongoDB的集群架构主要包括:mongos(路由)、Config Server(配置服务器)、shard(数据分片) 数据分片可以是一个集群,包括副本集和分片集 monogd进程是数据节点最小单位,单独的一个mongod进程可以是一个独立的MongoDB单机服务。多个mongod进程,可以通过配置文件中的参数来控制进程的行为。

mongos服务

mongos在MongoDB架构中作为存取路由器的角色,是为应用程序与数据库集合交互的接口,mongos使应用程序可以将MongoDB集群视为单一数据库实例来操作使用,数据存储过程中的复杂工作都由mongos来完成

mongos的特点

mongos属于轻量级的服务,可以同时存在多个mongos对MongoDB集群进行存取 mongos本身不保存数据的查询目录和索引信息,数据的查询目录和索引信息被保存在配置服务器中。可以将mongos与应用程序放在同一台服务器上,当应用程序服务器异常或下架时,mongos也随之失效,避免出现mongos闲置的状况

mongos的操作

在集群已经分片的情况下,应用程序经过mongos即可对所有分片数据进行查询或写入操作。

Config服务

Config Server是MongoDB的配置服务器,用来保存说明数据结构的元数据,例如,每个分片上的数据块列表及每个数据块的数据范围,另外,Config Server也保存了身份验证相关的信息。 mongos在启动后从Config Server加载数据库配置到缓存中,在通过mongos对分片中的数据结构进行变更后,MongoDB会自动在Config Server中作出相应的调整。一般不应该变更config的数据,如果要进行调整,需要重启mongos才能生效。

Config Server的操作

在生产环境中,通常会创建多个Config Server的副本来实现高可用。 config server副本集有以下两种架构:

  • SCCC(sync cluster connection configuration):由多个镜像的Config Server节点组成,如果一个节点宕机,则config将只能读不能写,元数据相关的操作会受到影响(MongoDB3.2-3.3支持)
  • CSRS(config server replica set):当集群中多数实例正常时,不会影响应用程序的读写与负载均衡。(MongoDB3.4后必须使用该架构) 部署集群后,MongoDB会自动生产一个名为config的数据库。

shard服务

在MongoDB集群中,shard是数据分片,负责存储数据,是一组mongod实例的集合,。 每个分片都是一个完整的副本集,而每一个副本集又一个或多个mongod节点组成 副本集和分片集都属于shard范畴。

副本集(replica set)

副本集包含多个副本,它可以让数据实现“接近实时的同步”,从而实现高可用,每个副本中保存的数据和正本一样

分片集(sharding cluster)

分片集与一般数据库中的数据库分区类似,它可以将数据按照自定义条件切割并分区存放。数据分片是一个分布式存储的应用,分片间不会出现数据重复的情况

副本集与分片集并存

可以根据扩容及故障恢复的需求,来配置分片集及副本集两者并存的架构 即:以副本集作为一个分片,并由多个分片组成一个集群整体