7.1 分片集群的部署架构
分片部署架构解决的问题
存储海量数据
高效的读/写海量数据
分片集群部署的原理
随着运行时间的推移,数据库的索引和数据文件会变得越来越大,对于单节点的机器来说,迟早会突破内存的限制,当磁盘上的数据文件和索引远大于内存的大小时,这个时候操作系统会频繁的进行内存交换,导致整个数据库系统的读写性能下降。
因此对于大数据的处理,要时刻监控mongoDB的磁盘I/O性能、可用内存的大小,在数据库内存使用率达到一定程度时就要考虑分片了。通过分片使整个数据库分布在各个片上,每个片拥有数据库的一部分数据,从而降低内存使用率,提高读写性能
分片集群的部署架构
一、分片shard
1、每一个片就是一个复制集;
2、复制集中的每个成员可能是一个mongod实例;
3、复制集所具备的特性比如:自动故障转移、冗余备份。在每个分片上均有体现
二、mongos路由进程
1、将整个分片集群看成一个整体,使分片集群对整个客户端来说是透明的,当客户端发起读/写操作时,由mongos路由进程将该操作路由到具体的分片上
2、此外,mongos是一个轻量级且非持久性的进程。轻量级表示它不会保存任何数据库中的数据
三、config配置服务器
1、mongos路由进程会从confg配置服务器上同步元数据信息,因此confg配置服务器要能实现这些元数据信息的持久化。
2、配置服务器上的数据如果丢失,那么整个分片集群就无法使用
3、在生产环境中通常利用三台配置服务器来实现冗余备份,这三台服务器是独立的,并不是复制集架构
具体结构见下图