MongoDB负载均衡、故障转移及海量数据应对方案

概述

下面是mongo的三种集群实施方案

方案 特点
Mater-Slaver(主从复制) 一主多从,一写多读
Replica Set(副本集) 一主多从,互为主备
Sharding(分片) 多实例分库

主从复制

MongoDB负载均衡、故障转移及海量数据应对方案

主节点对外提供读写服务,从节点定期轮询主节点获取读写操作,并在自己的数据副本执行,保持和主节点的一致性,并对外提供读服务。

优点:有一定负载均衡能力。

确定:没有容错机制,一旦主节点故障,只能人工介入。

副本集

MongoDB负载均衡、故障转移及海量数据应对方案

副本集与主从复制原理类似,但是在主从复制的架构基础上添加了一个仲裁节点,集群中所有节点定期向仲裁节点发送心跳,一旦检测到主节点故障,则启动投票机制,由从节点选举出新的主节点。补足了主从复制容灾能力的短板。

分片

MongoDB负载均衡、故障转移及海量数据应对方案

无论主从复制还是副本集,都无法应对海量数据的场景,因此产生了分片方案,核心思想是将数据库进行拆分,存储在不同服务器上。它有三个重要组件:

组件名称 组件用途
Route Server(路由服务器) 路由客户端请求到分片服务器,
并聚合分片服务器返回的结果发回客户端
Config Server(配置服务器) 存储并分片服务器元信息并提供给路由器
Shard Server(分片服务器) 接收路由器请求并将结果返回到路由服务器

分片的优点是以较低代价应对海量数据场景,但在实操当中常与副本集结合使用。