分片 ( sharing) 是实现 MongoDB 集群的另一种方式,它可以满足日益增长的 MongoDB 数据量的需求
海量的数据使得单台 MongoDB 存储显得吃力且难以满足提供可接受的读写吞吐量
通过将数据分割到多台服务器就变得越来越重要,使得 MongoDB 数据库系统能存储和处理更多的数据
为什么使用分片
1、 复制所有的写入操作到主节点
2、 延迟的敏感数据会在主节点查询
3、 单个副本集限制在12个节点
4、 当请求量巨大时会出现内存不足
5、 本地磁盘不足
6、 垂直扩展价格昂贵
MongoDB分片
下图展示了 MongoDB 分片集群结构分布
MongoDB 分片集群技术主要有三个组件
1、 Shard Server
用于存储实际的数据块
一个 shard server 角色可由几台机器组一个负载均衡承担,防止主机单点故障
2、 Config Server
mongod 实例,存储了整个 Cluster Metadata,包括 chunk 信息
3、 Query Routers
前端路由
客户端由此接入,且让整个集群看上去像单一数据库
MongoDB 分片技术搭建范例
假设 MongoDB 分片集群结构组件如下所示
Shard Server
Shard Server 1:localhost:27020
Shard Server 2:localhost:27021
Shard Server 3:loca