MongoDB 分片集群
之前说到了主从集群,关于主从集群的搭建以及细节后面会再次分享,这次我们先初步来看看 分片集群
举个例子
例如我们有几百G甚至更多的数据,可是我们只有单个副本集,数据量这么大,网络 IO ,CPU ,内存占用 消耗都会非常的大,一个集群可能吃不消
那么我们可以分片 , 分片也就是分而治之
分片
分片,分为
- 垂直分布
可以提高集群节点的性能,但是这个方式是有瓶颈的,例如我们一台服务器,内存占用较高,我们可以通过增加服务器的内存在处理
- 水平分布
例如我们的服务器,内存占用较高,我们可以增加服务器的数量,增加集群的数量,这样服务器一多,维护成本也就线性增加,性能也是线性提升的
实际情况下,如果我们的数据增长非常大,那么肯定会有冷热数据的区分,对于冷数据,我们可以将数据放到差一些的服务器,很少会用到查询操作或者写操作,对于热点高频数据,我们就可以放到高性能的服务器上面,且要做好扩展
为什么要用分片集群?
我们为什么要使用分片集群呢?还是因为数据量太大,需要我们分成一小块一小块的分别来处理,这样才得以解决数据量大的问题
分片集群就是 Mongdb 在多台计算机之间分配数据的集群部署方式
通过上面的例子我们可以知道,就是可以将大型的数据,进行区分成相对更小并且易于管理的小片,将这些数据片分给不同的 mongodb 节点,这些节点,就组成了分片集群
对于分片集群,我们需要熟悉一下如下角色:
Router 路由器:
路由器,这里是 mongos 服务,当做是一个路由器,在客户端程序需要分片的时候可以提供接口
Shard 分片:
每个 Shard 分片包含共享数据的子集,每个Shard 分片是可以部署主从集群的,所以,分片集群,其实就是多个主从集群
config server 配置服务:
配置服务存储集群的元数据和具体的配置设置,mongodb 逐步发展,必须要将配置服务部署为副本集了,这个是 mongodb 3.4 版本开始的
为什么要把 mongos 放到客户端?
可以较少网络开销,例如分片在别的网络上面的时候,若客户端想要做路由,mongos 就在本地,那么在本地就可以完成路由,如果 mongos 在服务端,那么就多出相互通信的数据包,增加网络开销
如果 config server 的配置发生改变了,一般的情况下,是需要通过我们的 mongos 来进行修改的,修改后需要重新加载数据
而不是我们登陆到某一个 config server 上修改数据,这样会造成数据混乱,不能这样干
今天暂时了解一下基本的知识点,下一次我们一起来搭建一下 mongodb 的集群,以及部署中可能会遇到的坑
学习所得,若有偏差,还请斧正
欢迎点赞,关注,收藏
朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力
好了,本次就到这里
技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。
我是阿兵云原生,欢迎点赞关注收藏,下次见~
本作品采用《CC 协议》,转载必须注明作者和本文链接
意思是客户端连接mongo服务端的时候,会把整个路由表下载到本地吗?