1、MongoDB分片

ps: 1. 由于最近遇到了一些问题,使我不得不对mongodb的分片机制做一个总结。后续将会写一篇mongodb 聚合查询优化的文章。 2. 本文是对mongodb分片知识点的梳理以及一些个人经验之谈,其中分片理论知识大部分来源于官方资料:https://www.mongodb.com/docs/v4.2/core/ranged-sharding/

1.1、分片概念简介

分片(Sharding): 是指将数据拆分,分散在不同机器上的过程,使用分片可以将 读和写 操作分散到不同的机器上(前提是分片键选择合适),从而有效减少单台机器的CPU和存储的压力,提高QPS,使整个集群能够处理更大的负载。

自动水平扩展: MongoDB提供了一种称为Auto-Sharding的机制,该机制可以自动实现系统的水平扩展。虽然分片的概念源于关系型数据库的分区,但还是有一些差别。最大的差别是MongoDB自动完成所有的工作,不需要人工介入,并且当各个分片中的数据分布不平衡时,自动保持数据平衡。

1.2、分片集群组成

下边我们看下mongoddb分片部署时,都由哪几部分组成:

1. shard: 称为片,每个shard 可以是一台服务器上的一个Mongod实例,但是为了提高系统的可靠性实现自动故障恢复,一个Shard应该是一个复制集(官方原话:从MongoDB 3.6版本开始,每个分片必须部署为副本集架构。)。

2. mongos(路由/代理): 充当路由或者说代理人 的角色,为 应用程序和分片集群间的通信 提供一个通道,可以理解成:应用程序和mongodb库之间的代理人,通过他,应用程序可以不关心分片集群的具体底层分片逻辑,也就是说在应用程序进行 读/写 数据时候,直接面向mongos操作。而具体是往哪个片读/写 则由分片键决定。

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: