MongoDB架构
MongoDB是典型的C/S架构,数据库存储采用主从结构,应用发起的读写请求都落在主库上,如果是写入请求,主库提交之后,还会同步写入到对应的从库上,同步的具体方式是类似OpLog,主库+从库组成了一个副本集,是MongoDB最小的部署单位。
同时,MongoDB还支持较为复杂的集群方案,为用户解决元数据的高可用,业务数据的冗余和灾备(副本集来保证),动态自动分片,动态自动数据均衡等问题。典型的集群架构如下图所示:
上面的图表示的集群由两个副本集,一个配置服务器,两个MongoS路由器组成其中配置服务器是存放整个集群的元信息,本身不具备调度功能;MongoS路由负责负载均衡,当客户端请求到来时,MongoS需要把该请求路由到对应的副本集上。
分片
MongoDB分片集群将数据分布在一个或多个分片上。每个分片部署成一个MongoDB副本集,该副本集保存了集群整体数据的一部分。因为每个分片都是一个副本集,所以他们拥有自己的复制机制,能够自动进行故障转移。你可以直接连接单个分片,就像连接单独的副本集一样。但是,如果连接的副本集是分片集群的一部分,那么只能看到部分数据。
分片的信息可以基于库,也可以基于集合,对于大部分情况,