分片集群简介
MongoDB常见部署架构
- 单机版(测试环境)
- 复制集 (线上)
- 分片集群 (线上,大型核心的业务场景)
为什么要使用分片集群
分片如何解决?
- 最多分1024片
完整的分片集群
分片集群解剖:路由节点mongos
- mongos至少有两个,高可用的存在
分片集群解剖:配置节点mongod
分片集群解剖:数据节点 mongod
- 每一个分片必须是一个复制集
MongoDB分片集群特点
三种分片方式
- chunk是逻辑的chunk
- 查询性能比较优良点
- 哈希是安全的做法,哈希本身是随机的,可以随机的写到各个区块不同的范围内,起到一个随机分布到各个节点上的效果(对大量写入有不错的优化)
- 缺点:连续取数据的话,需要从很多个节点上取
- 打标签,把不同地区的数据放在不同地域的节点上,本地写和本地读
小结
分片集群设计
合理的架构
分片大小
需要多少个分片
其他需求
正确的姿势来使用
选择合适的片键
选择基数大的片键
- 值的大小就是基数
选择分布均匀的片键
定向性好
例子
- 片键太大
- 哈希,查的话需要去多个分片中
- 使用userID
常见的方法 组合片键
- 因为基数不够大,加上time就可以了
- userID定向查询。time基数变大
足够的资源
- SSD 或者快速的存储,保证数据如果没有在内存的话,保证快速的从磁盘上访问,
- 瓶颈性能见的最多的就是存储层