MongoDB分片集群技术用于解决海量数据的存储问题,本文介绍MongoDB分片集群相关的常用知识。
什么情况下使用分片集群?
当您遇到如下问题时,可以使用分片集群解决:
-
存储容量受单机限制,即磁盘资源遭遇瓶颈。
-
读写能力受单机限制,可能是CPU、内存或者网卡等资源遭遇瓶颈,导致读写能力无法扩展。
如何确定shard、mongos数量?
您可以根据以下方法确定shard和mongos的使用数量:
-
分片集群仅用于解决海量数据的存储问题,且访问量不多。例如一个shard能存储M, 需要的存储总量是N,那么您的业务需要的shard和mongos数量按照以下公式计算:
-
numberOfShards = N/M/0.75 (假设容量水位线为75%)
-
numberOfMongos = 2+(对访问要求不高,至少部署2个mongos做高可用)
-
-
分片集群用于解决高并发写入(或读取)数据的问题,但总的数据量很小。即shard和mongos需要满足读写性能需求,例如一个shard的最大QPS为M,一个mongos的最大QPS为Ms,业务需要的总QPS为Q,那么您的业务需要的shard和mongos数量按照以下公式计算:
-
numberOfShards = Q/M/0.75 (假设负载水位线为75%)
-
numberOfMongos = Q/Ms/0.75
说明
-
如果分片集群同时解决上述两个问题,则按照需求更高的指标进行预估。
-
上述计算方法是基于分片集群中数据和请求都均匀分布的理想情况下进行预估,实际情况下,分布可能并不均匀,为了让系统的负载尽量均匀,您需要选择合理的Shard Key。
-