MongoDB负载均衡、故障转移及海量数据应对方案
概述
下面是mongo的三种集群实施方案
方案 | 特点 |
---|---|
Mater-Slaver(主从复制) | 一主多从,一写多读 |
Replica Set(副本集) | 一主多从,互为主备 |
Sharding(分片) | 多实例分库 |
主从复制
主节点对外提供读写服务,从节点定期轮询主节点获取读写操作,并在自己的数据副本执行,保持和主节点的一致性,并对外提供读服务。
优点:有一定负载均衡能力。
确定:没有容错机制,一旦主节点故障,只能人工介入。
副本集
副本集与主从复制原理类似,但是在主从复制的架构基础上添加了一个仲裁节点,集群中所有节点定期向仲裁节点发送心跳,一旦检测到主节点故障,则启动投票机制,由从节点选举出新的主节点。补足了主从复制容灾能力的短板。
分片
无论主从复制还是副本集,都无法应对海量数据的场景,因此产生了分片方案,核心思想是将数据库进行拆分,存储在不同服务器上。它有三个重要组件:
组件名称 | 组件用途 |
---|---|
Route Server(路由服务器) | 路由客户端请求到分片服务器, 并聚合分片服务器返回的结果发回客户端 |
Config Server(配置服务器) | 存储并分片服务器元信息并提供给路由器 |
Shard Server(分片服务器) | 接收路由器请求并将结果返回到路由服务器 |
分片的优点是以较低代价应对海量数据场景,但在实操当中常与副本集结合使用。