MongoDB 分片怎么配置和使用?

文章导读
上一个 测验 下一个 分片是将数据记录存储在多台机器上的过程,这是 MongoDB 应对数据增长需求的方法。随着数据规模的增加,单台机器可能无法存储数据,也无法提供可接受的读写吞吐量。分片通过水平扩展来解决这个问题。通过分片,您可以添加更多机器来支持数据增长以及读写操作的需
📋 目录
  1. 为什么需要分片?
  2. MongoDB 中的分片
A A

MongoDB - 分片



上一个
测验
下一个

分片是将数据记录存储在多台机器上的过程,这是 MongoDB 应对数据增长需求的方法。随着数据规模的增加,单台机器可能无法存储数据,也无法提供可接受的读写吞吐量。分片通过水平扩展来解决这个问题。通过分片,您可以添加更多机器来支持数据增长以及读写操作的需求。

为什么需要分片?

  • 在复制中,所有写操作都发送到主节点

  • 延迟敏感的查询仍然发送到主节点

  • 单个副本集最多支持 12 个节点

  • 当活跃数据集很大时,内存可能不足

  • 本地磁盘容量不足

  • 垂直扩展成本过高

MongoDB 中的分片

下图展示了使用分片集群的 MongoDB 分片架构。

MongoDB Sharding

在下图中,有三个主要组件 −

  • Shards − Shards 用于存储数据。它们提供高可用性和数据一致性。在生产环境中,每个 shard 是一个独立的 replica set。

  • Config Servers − Config servers 存储集群的元数据。这些数据包含集群数据集到 shards 的映射。查询路由器使用此元数据将操作定向到特定的 shard。在生产环境中,分片集群正好有 3 个 config servers。

  • Query Routers − Query routers 基本上是 mongo 实例,与客户端应用程序交互并将操作定向到合适的 shard。查询路由器处理操作并将其定向到 shards,然后将结果返回给客户端。一个分片集群可以包含多个查询路由器来分担客户端请求负载。客户端向一个查询路由器发送请求。通常,分片集群有多个查询路由器。