MongoDB分片集群横向扩展
目录
分片集群使用的场景
MongoDB三种架构
单机版
复制集
分片集群
分片集群原理
分片集群特点
三种分片方式
基于范围
基于hash
自定义
小结
分片集群使用的场景
数据量大、访问性能低、恢复时间慢、数据分布广
MongoDB三种架构
单机版
适合开发和测试使用
复制集
多节点主从高可用部署,常见的线上架构一主二从
分片集群
分片集群原理
把mongoDB的数据进行分片,分成多个节点,每个分片节点各自也有自己的复制集
如图所示四分片的MongoDB的分片集群
Shard 复制集,一主二从高可用部署
mongos 路由节点,为应用程序提供单一入口,开发者只需要关注应用层
config 配置节点,一主二从高可用,存储数据和分片节点的映射,通过这个配置节点,可以找到知道在那个分片节点上面进行查询
分片集群特点
应用全透明,无特殊处理
数据自动均衡
动态扩容,无需下线
提供三种分片方式
三种分片方式
基于范围
选一个或几个组合字段,把这个字段的范围进行分片
优点: 范围查询性能很好
缺点: 由于是按范围分片,有可能数据不均匀,大量数据集中在一个分片节点上面
基于hash
选某个字段求hash值,根据hash值和分片节点数量,决定数据存储在哪个节点
本身hash值是随机的,所以数据分布一定是均匀的
优点: 数据分布均匀,避免了大量数据数据分布不均匀
缺点: 数据分片不连续,查询效率很低,需要很多分片节点进行查询
自定义
自己决定怎么存
如: 通过给数据打标签进行区分,存储到相应的分片节点
小结
分片集群可以有效解决性能瓶颈及系统扩容问题
分片额外消耗较多,管理复杂,尽量不要分片