您的位置:首页 > 数据库 > Mongodb

mongodb学习记录---集群分片Shard_1

2018-02-04 14:49 337 查看
    最近项目中要使用Mongodb进行数据管理,便想着来学一学Mongdb补充一下精神食粮。现如今正是非关系数据库火的时候,Mongodb和Redis应该称得上是非关系型数据库中的代表作品了,当然不乏一些大企业仍然在用关系型数据库(当然是大牛们自己进行修改及二次开发),也有一种大的趋势是关系型数据库与非关系数据库搭配使用,奇兵总是有奇效嘛。现如今在大流量的时代,系统的响应速度以及人机的即时交互化是一个大型系统的所关注的要点之一,而在数据量比较大的系统中就更是如此,所以这个时候就离不开数据库的集群处理了。俺也对这个也比较感兴趣就想着瞅瞅这个东西(纯属是为自己的学习记录,如有错误大佬们可以联系俺)。

    Mongodb分布式的优异性能和自动化的负载均衡都是它的核心竞争力之一,而提到Mongodb的分布式,则是离不开分片的,简单的来说分片(shard)就是将一个大型集合按某些字段为标识,进行进一步的数据划分,将这些不同区间的数据分别存储到不同服务器的数据库中,这些字段就是术语中所谓的"片键"。基于对mongodb中的分布式初步了解,以下是俺画的一个简图。图中包含了mongo集群的核心:集群配置服务器(存储集群中的有关配置文件,包括具体集群中的各个服务器有关记录等等)、mongos专有分发路由(负责将不同的数据请求分发到不同的服务器中)、集群(数据源---分片)。下面就是俺按照这个思路简单绘制的示意图:


    从图上可以看的出来,mongo集群的一个特性即不可见性,啥意思呢,就是对于应用程序中的请求,暴露给应用的是一个mongodb实例,应用只知道通过该对象进行对数据的进行各项操作,而对于其中的mongobd是否集群等情况则是一无所知的。应用通过对mongodb实例对象的操作向数据库发出数据请求,这个请求会先到达mongos这个路由进程,这个进程然后通过自己的判断将请求进一步分发到应该请求的服务器中,另外提一句这个mongos也是mongodb数据库自动化负载均衡的核心。当请求到达对应的服务器(片)后进行操作最后返回,这就是mongo分布式最简单的一个过程。对于这里面的一些细节俺会再慢慢分开进行记录!!!(@^@)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: