MongoDB - Sharding

Sharding是在多台机器上存储数据记录的过程,它是MongoDB满足数据增长需求的方法.随着数据大小的增加,单个机器可能不足以存储数据,也不足以提供可接受的读写吞吐量.分片解决了水平缩放的问题.通过分片,您可以添加更多机器来支持数据增长以及读写操作的需求.

为什么要进行分片?

  • 在复制中,所有写入都转到主节点

  • 延迟敏感查询仍然转到主页

  • 单个副本集有限制12个节点

  • 当活动数据集很大时内存不够大

  • 本地磁盘不够大

  • 垂直缩放过于昂贵

MongoDB中的分片

下图显示了MongoDB中的分片使用分片集群.

MongoDB Sharding

在下图中,有是三个主要组成部分 :

  • 碎片 : 碎片用于存储数据.它们提供高可用性和数据一致性.在生产环境中,每个分片都是一个单独的副本集.

  • 配置服务器 : 配置服务器存储集群的元数据.此数据包含群集数据集到分片的映射.查询路由器使用此元数据将操作定位到特定分片.在生产环境中,分片群集恰好有3个配置服务器.

  • 查询路由器 : 查询路由器基本上是mongo实例,与客户端应用程序的接口以及对相应分片的直接操作.查询路由器处理操作并将其作为分片的目标,然后将结果返回给客户端.分片群集可以包含多个查询路由器来划分客户端请求负载.客户端向一个查询路由器发送请求.通常,分片群集具有许多查询路由器.