8.1. 分片集群简介

当 MongoDB 需要存储海量数据时,单节点不足以存储全量数据,且可能无法提供令人满意的吞吐量。所以,可以通过 MongoDB 分片机制来支持水平扩展。

分片集群特点

  • 对应用完全透明
  • 数据自动均衡
  • 动态扩容
  • 提供三种分片方式

分片集群组件

MongoDB 分片集群含以下组件:

分片集群的分布

  • MongoDB 复制集以 collection 为单位 ,将数据分布在集群中的各个分片上。最多允许 1024 个分片。
  • MongoDB 复制集的分片之间数据不重复,只有当所有分片都正常时,才能完整工作。
  • MongoDB 数据库可以同时包含分片和未分片的集合的 collection。分片 collection 会分布在集群中各节点上。而未分片的 collection 存储在主节点上。每个数据库都有其自己的主节点。

分片和未分片的 collection:

路由节点 mongos

要连接 MongoDB 分片集群 (opens new window),必须连接到 mongos (opens new window)路由器。这包括分片和未分片的 collection。客户端不应该连接到单个分片节点进行读写操作。

连接 mongos (opens new window)的方式和连接 mongod (opens new window)相同,例如通过 mongo (opens new window)shell 或 MongoDB 驱动程序 (opens new window)

路由节点的作用:

  • 提供集群的单一入口
  • 转发应用端请求
  • 选择合适数据节点进行读写
  • 合并多个数据节点的返回

一般,路由节点 mongos 建议至少 2 个。