mongodb 分片

2018年04月18日 13:35 | 2309次浏览

分片是一种在多台机器上存储数据记录的操作,它是 MongoDB 为应对数据增长需求而采取的办法。当数据量增长时,单台机器有可能无法存储数据或可接受的读取写入吞吐量。通过横向扩展,分片技术解决了这个问题。利用分片技术,我们可以添加更多的机器来应对数据量增加以及读写操作的要求。


为何要分片

将所有的写入操作复制到主节点

对延迟敏感的查询将在主节点上完成

单个副本集的节点数限制为 12 个

当活跃数据集过大时,内存有可能不够

本地磁盘空间不足

纵向扩展太过昂贵

MongoDB 中的分片

下图展示了 MongoDB 使用分片集群的情形:


在上图中,有三个组件值得说明:

分片 分片用来存储数据。它们提供了高可用性与数据一致性。在生产环境中,每个分片都是一个独立的副本集。

配置服务器 配置服务器(Config server)保存着集群的元数据。该数据含有集群数据集到分片的映射关系。查询路由使用该元数据来定位特定分片的操作。在生产环境中,分片集群具有 3 个配置服务器。

查询路由 查询路由(Query Router)基本上就是 mongos 实例,是客户端的接口,直接操作适当的分片。查询路由定位并处理对分片的操作,并将结果返回至客户端。分片集群可能含有多个查询路由,以便分散客户端请求负载。一个客户端请求对应着一个查询路由。通常一个分片集群可能有很多查询路由。



小说《我是全球混乱的源头》

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程