mongo实战2——第12章 分片集群

分片集群就是把一个大的数据集拆分成若干个小的数据集,将拆分后的数据集存储在不同的mongo实例中。

分片的优缺点

优点:

  1. 存储分布式:分片可以把大数据集分散到多个节点,减少单个节点的存储压力
  2. 负载分布式:分片可以减少单个节点的负载压力,包括IO,CPU等

缺点:
会增加系统的复杂性和维护成本。

分片集群的组件

mongo实战2——第12章 分片集群
如上图所示:分片集群由 分片、mongos路由器、配置服务器组成。

  • 分片;存储集群中的数据,在分片集群中,只有mongos路由器、和系统管理员可以直接连接分片服务器节点,生产环境中每个分片节点应该是一个复制集群。
  • mongos路由器;缓存集群中的元数据,使查询可以路由到正确的分片节点中,由于路由器的存在,mongo的分片集群对客户端是透明的。mongos是轻量级的,不持久化数据的。可以和应用部署在同一个服务器上。
  • 配置服务器: 一直存储集群中的元数据,包括全局的集群配置、每个数据库、每个集合范围数据的存储节点、跨片数据迁移的日志;mongos启动时会从config获取元数据信息;配置服务器是一个复制集群

数据的分片方式

集合分片,既根据集合中的某个字段或者多个字段进行分片。
为了实现集合的分片mongo定义了chunk(块)的概念,每一个块包含集合的一部分数据,并且是按照分片键连续的,
在查找时,如果按照分片键查找,可以定位到指定的数据块,之后路由到包含此块的分片节点。如果不是通过分片键查找,或将查询路由到所有的分片节点,之后在mongos节点合并结果,此方式性能较差。在设置分片键时,应尽量选取查询条件的字段。