文档章节

MongoDB【最新版V2.6】- 系列 2: shard 分片的介绍

止静
 止静
发布于 2014/10/13 13:22
字数 1131
阅读 41
收藏 0

阅读目的:深刻的了解MongoDB的分片机制

阅读关键: 无比要对MongoDB的与分片 shard有关的概念有清楚的了解。

 1:   Shard介绍

        shard指的是水平方向的多节点的数据分散的存储,说的更简单一点,就是一台机器上可能装不下的数据,我们

装到多台机器上去,比如,我们将全国的省份证的信息,存储到不同的Shard Server中间去,这里的Shard Server,就是每一个分布式的Mongo机器。

        应用的程序可以通过mongos process 登陆到shard集群之中,MongoPress 进行一个路由上的调度。查询,请求的过程也是如此。 面对使用者只有一层一个节点。

    

2: 负载均衡和失效切换

        当某个shard的负载超过一定阙值后,就会自动的重新分发数据,用来保证系统的负载均衡。更简单的话来形容,就是

写入的时候如果向某一台机器上去写,超过了机器自身的能力了,就会重新的分发数据,与之对应的Hbase,通常会出现单台

写入的热点问题,目前对于Mongo的处理机制还未知。


      在一个通常的配置之中,每一个Shard中都该包含了2个以上节点的设备组,设备组的名字通常称为 replica.set,replica.set有N台服务器,在其中有一个为主,其他的为辅助,一旦其中的一个挂掉以后,会自动重启将一台服务器切换为

主服务器。


3:

    Shard架构图:

        


        


4 :shard key 

            要实现分片功能,我们需要指定集合的分片key,相当于数据库的分区字段,

这个分片key通常需要创建一个索引,分片key可以由一个或则多个字段构成


5: chunks

        Chunks是一个集合之中的一段连续的数据,当一个Chunk达到一定大小的时候,就会开始分裂。当一个

shard超过一定量的数据时,chunk会被迁移到其他shard之中,新增shard也会影响chunk的移动,好比你把日志

写入到你的本地文件,规定是60M的一个文件,一旦超过大小,就有新的文件,一旦文件在机器上存放不了了,

那就将这台机器上的文件转移到其他的机器上去~        

  MongoDB的shard,四环一种将海量的数据水平扩展的数据库集群系统,数据库分表存放在Sharding的

各个节点之上。

相对于关系数据库而言,Chunk就是数据库中的一行记录,Collection就是对于与关系数据库中的表。


Shard Server

即存储实际数据的分片,每个Shard可以是一个mongod实例,也可以是一组mongod实例构成的Replica Set。为了实现每个Shard内部的auto-failover,MongoDB官方建议每个Shard为一组Replica Set。关于如何安装及搭建replica set请参考我的另一篇文章 http://gong1208.iteye.com/blog/1558355

 

Config Server

为了将一个特定的collection存储在多个shard中,需要为该collection指定一个shard key,例如{age: 1} ,shard key可以决定该条记录属于哪个chunk。Config Servers就是用来存储:所有shard节点的配置信息、每个chunk的shard key范围、chunk在各shard的分布情况、该集群中所有DB和collection的sharding配置信息。


说的更加明白一点,Config Server 保存集群的元数据。

 

Route Process

这是一个前端路由,客户端由此接入,然后询问Config Servers需要到哪个Shard上查询或保存记录,再连接相应的Shard进行操作,最后将结果返回给客户端。客户端只需要将原本发给mongod的查询或更新请求原封不动地发给Routing Process,而不必关心所操作的记录存储在哪个Shard上。


route process 说的更明白点就是一个选择器,不断的调度合适的客户端请求,将需求中所请求,所需要的数据,从合适的shard之中返回你所需求的数据。




下面我们在同一台物理机器上构建一个简单的 Sharding Cluster:

架构图如下:

     
















© 著作权归作者所有

止静
粉丝 121
博文 134
码字总数 125762
作品 0
东城
技术主管
私信 提问
Mongodb 删除添加分片与非分片表维护

Mongodb 删除添加分片与非分片表维护 更新时间:2016年01月15日 09:10:01 作者:aqszhuaihuai 我要评论 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰...

linjin200
09/10
15
0
MongoDB集群部署 - 带访问控制的分片副本集

1. 前言   Ceilometer将meter、event等数据保存在MongoDB中,之前将MongoDB部署在控制节点上,使用三副本模式,时间长了发现meter数据爆炸式增长,区区2T的磁盘捉襟见肘,而想删除旧数据,...

Sai18
2018/08/16
0
0
MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中。但是当文件太大时,例如图片...

开元中国2015
2015/07/25
383
0
84.mongodb分片介绍 搭建 测试 及mongodb备份与恢复

21.36 mongodb分片介绍 21.37/21.38/21.39 mongodb分片搭建 21.40 mongodb分片测试 21.41 mongodb备份恢复 21.36 mongodb分片介绍 分片是由一个一个的副本集组成的 1.分片就是将数据库进行拆...

axin-linux
04/01
14
0
在CentOS7上部署MongoDB分片群集

MongoDB分片概述 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读...

xuyan184004
2018/09/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

官方来源的 Duo Mobile App 解决了我的 Network Difficulties 问题

https://help.duo.com/s/article/2094?language=en_US 我利用百度搜索下载了一个 Duo Mobile App (由于 Google Play)在大陆不可用。 在扫描旧手机上的 Duo Mobile App 的二维码时, 显示出错...

圣洁之子
29分钟前
4
0
Zabbix监控Mysql容器(Docker容器)主从是否存活

1、在Zabbix Web端创建模板 2、为该模板创建监控项 3、创建触发器 4、在zabbix-agent端操作 在/etc/zabbix/zabbix_agentd.d新建customize.confw文件 内容如下 UserParameter=mysql.replicat...

abowu
30分钟前
3
0
基于 RocketMQ 的同城双活架构在美菜网的挑战与实践

本文整理自李样兵在北京站 RocketMQ meetup分享美菜网使用 RocketMQ 过程中的一些心得和经验,偏重于实践。 嘉宾李样兵,现就职于美菜网基础服务平台组,负责 MQ ,配置中心和任务调度等基础...

大涛学长
36分钟前
5
0
设计模式之:外观模式和桥接模式

作者:DevYK 链接:https://juejin.im/post/5d7e01f4f265da03b5747aac 外观模式 介绍 外观模式 (Facade) 在开发过程中的运用评率非常高,尤其是在现阶段,各种第三方 SDK “充斥” 在我们周边...

Java架构Monster
37分钟前
3
0
人证合一核验设备

人脸身份验证机,人证合一设备1:N如我们现在在车站或一些重要的场所如步行街、城中村等人流密集的场所应用的人脸识别布控系统,其特点是动态和非配合。所谓的动态也就是识别的不是照 片,不是...

非思丸智能
39分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部