1. MongoDB常见的部署架构 * 单机版 * 复制集 * 分片集群 2. 为什么要使用分片集群 * 数据容量日益增大,访问性能日渐下降,怎么破? * 新品上线异常火爆,如何支撑更多用户并发? * 单库已有10TB数据,恢复需要1-2天,如何加速? * 地理分布数据3. 分片如何解决问题? 银行交易表单内10亿笔资料超负荷运转,交易号 0-1,000,000,000 把数据分成两两半,放到两个库里。 交易号:0-500,000,000 交易号:500,000,001-1,000,000,000 mongodb 最多可以分成1024片 4. 完整的分片集群
5. 分片集群解剖:路由节点mongos * 提供集群单一入口 * 转发应用端请求 * 选择合适数据节点进行读写 * 合并多个数据节点的返回 * 无状态 * 建议至少两个6. 分片集群解剖:配置节点mongod * 提供集群元数据存储 * 分片数据分布的映射 普通复制集架构 | Lower | Upper | Shard | |-------|-------|-------| | 0 | 1000 | Shard0 | | 1001 | 2000 | Shard1 | 7. 分片集群解剖:数据节点mongod * 以复制集为单位 * 横向扩展 * 最大1024分片 * 分片之间数据不重复 * 所有分片在一起才可以完整工作8. MongoDB分片集群特点 * 应用全透明,无特殊处理 * 数据自动均衡 * 动态扩容,无须下线 * 提供三种分片方式9. 分片集群数据分布方式 * 基于范围
* 基于Hash
* 基于zone / tag
10. 小结 * 分盘集群可以有效解决性能瓶颈及系统扩容问题 * 分片额外消耗较多,管理复杂,尽量不要分片