MongoDB Sharded Cluster 原理
如果你还不了解 MongoDB Sharded cluster,可以先看文档认识一下
什么时候考虑用 Sharded cluster?
当你考虑使用 Sharded cluster 时,通常是要解决如下2个问题
- 存储容量受单机限制,即磁盘资源遭遇瓶颈。
- 读写能力受单机限制(读能力也可以在复制集里加 secondary 节点来扩展),可能是 CPU、内存或者网卡等资源遭遇瓶颈,导致读写能力无法扩展。
如果你没有遇到上述问题,使用 MongoDB 复制集就足够了,管理维护上比 Sharded cluster 要简单很多。
如何确定 shard、mongos 数量?
当你决定要使用 Sharded cluster 时,问题来了,应该部署多少个 shard、多少个 mongos?这个问题首富已经指点过我们,『先定一个小目标,比如先部署上1000个 shard』,然后根据需求逐步扩展。
回到正题,shard、mongos 的数量归根结底是由应用需求决定,如果你使用 sharding 只是解决 『海量数据存储』的问题,访问并不多,那么很简单,假设你单个 shard 能存储 M, 需要的存储总量是 N。
numberOfShards = N / M / 0.75 (假设容量水位线为75%)
numberOfMongos = 2+ (因为对访问要求不高,至少部署2个 mongos 做高可用即可)