这篇主要讲述分片集群的主要原理 坦白说,刚看到这个分片系统(Sharding)有点蒙,感觉有点太高大上了。看美国作家Kyle Banker《Mongodb in action》没有明白。又查询资料,首先对与分片的做个说明。从其他书本上看的,说分片这是一种将海量数据水平扩展的数

这篇主要讲述分片集群的主要原理

坦白说,刚看到这个分片系统(Sharding)有点蒙,感觉有点太高大上了。看美国作家Kyle Banker《Mongodb in action》没有明白。又查询资料,首先对与分片的做个说明。从其他书本上看的,说分片这是一种将海量数据水平扩展的数据库集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地够将一个分布式MongoDB集群。

一、角色说明

要构建一个MongoDB分片集群,需要三个角色:

shard server 即存储实际数据得分片,每个shard 可以是一个Mongod实例,也可以是一组mongod实例构成得Replica Set(也就是以前博客里说明的复制集)。为了实现每个shard内部的auto-failover,MongoDB官方建议每个shard 为一组Replica set。Config Server 为了将一个特定的collection存储在多个shard中,需要为该collection指定一个shard key,例如{age:1},shard key可以决定该条记录属于哪个chunk。(chunk将在后面做详细介绍)Config Servers就是用来存储所有shard节点的配置信息,每个chunk的shard key范围,chunk在各shard的分布情况 、该集群中所有DB和collection的sharding 配置信息Route Process 这个一个前端路由,客户端由此接入,然后询问config servers需要到哪个shard上查询或把保存记录,在连接相应的shard进行操作,最后讲结果返回客户端。客户端只需要将原本发给mongod的查询或更新请求原封不动地发给rounting processl.而不必关心所操作的记录存储在哪个shard上,

二、框架结构

如果用一台物理机搭建分片集群:结构图如下:

每个服务器的端口不一样

三、框架说明

由于该分片集群比较抽象,我从其他数据上看到些说明,在这里做一个补充;

A:分片是把数据库分别在多个服务器上

B:查询一个用户实际涉及两次查询,第一次访问配置数据库以获得用用户的分片位置,第二次查询直接访问包含用户数据的分片

C:主要解决说明扩容问题以及负载均衡问题

D:手动管理分片的著名框架为: Twitter的Gizzard (详见:http://mng.bz/4qvd)

E :对现在系统的分片决定因素: 磁盘活动,系统负载以及最重要的工作集大小与可用内存的比例

F:chunk块的概念:它是位于一个分片中的一段连续的分片键范围。它们是种逻辑意义上的东西而不是物理意义上的。

G: 分片键: MongoDB的分片是基于范围的。也就是说分片的集合中每个文档都必须落在指定键的某个值范围。分片键就是让每个文档能在这些范围中找到自己的位置

H:拆分和迁移

这两个是完全不同的概念,拆分思想是当分片块数据达到一定大小时候把其分为两块。拆分后的两块都有相同数量的文档。拆分仅仅是个逻辑操作,不会影响分片集合中里文档的物理顺序。

迁移是由名为“balancer”均衡器软件进行管理的,它的任务是确保数据在各个节点中保持均匀分布。通过跟踪各分片块的数量,就能实现该功能。通常来说,当集群中拥有块最多的分片与拥有块最少的分片的块数差大于8时,均衡器就会发生一次均衡处理。

I:建议框架图

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

gizzard mysql_【MongoDB】在window系统下搭建MongoDB的分片系统(一)相关推荐

  1. windows系统下搭建cloudreve网盘系统

    最近博主想搭建属于自己的网盘系统,去github上看了一些开源项目,比较对cloudreve感兴趣,但是github的搭建步骤不全以及网上没有完整的搭建博文,于是,博主想自己搭建cloudreve网盘 ...

  2. Windows系统下搭建NFS服务器

    Windows系统下搭建NFS服务器       在windows系统中采用NFS功能实现文件共享,让Linux系统来访问. 首先在windows系统中安装一个实现NFS功能的第3方软件haneWin ...

  3. geany配置python_Linux系统下搭建基于Geany+Python开发环境

    Linux系统下搭建基于Geany+Python开发环境 一.升级python mkdir /usr/local/python3 # tar xvf Python-3.6.1.tar.xz # 解压文 ...

  4. Windows系统下搭建MPI环境

    Windows系统下搭建MPI环境 MPI的全称是Message Passing Interface即标准消息传递界面,可以用于并行计算.MPI的具体实现一般采用MPICH.下面介绍如何在Window ...

  5. 如何在Ubuntu系统下搭建Android开发环境

    本文记录了如何在Ubuntu 12.04(64bit)系统下搭建Andriod(安卓)开发环境. 1.安装jdk 首先是下载和安装jdk.可以直接去http://java.sun.com下载.我当时下 ...

  6. Linux系统下搭建BUG管理系统---禅道

    Linux系统下搭建BUG管理系统---禅道 事前准备: Linux系统服务器,centos6.5版本 Windows系统本地电脑 禅道压缩包 Xshell4.xftp管理工具 1.安装mysql y ...

  7. 在Windows系统下搭建ELK日志分析平台

    2018年07月11日 22:29:45 民国周先生 阅读数:35 再记录一下elk的搭建,个人觉得挺麻烦的,建议还是在linux系统下搭建,性能会好一些,但我是在windows下搭建的,还是记录一下 ...

  8. linux 打印当前系统环境_Linux系统下搭建python环境

    首先linux系统下一般是自带python2环境的,但是目前大多数项目工程python2是不适用的,今天我们就来讲解下如何在linux系统下搭建python3! 以上是自带的python2,接下来搭建 ...

  9. Win 10 系统下搭建 Python 编程环境,有手就行

    前言 想把一门编程语言学好,会搭建编程环境无疑是有必要的,纵然有线上集成的编程环境,但那高度依赖于网络条件以及诸多情况,这使得我们在编程的时候难以存储自己的资料. 学习和使用 python 一年多以来 ...

最新文章

  1. android中的回调
  2. struts+hibernate 分页
  3. 200G vs 400G:谁是数据中心网络下一站?
  4. python pandas dataframe 转json_python将相类不同key的json对象转化为pandas的dataframe(上篇)...
  5. 牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】
  6. java 基础编程题 5
  7. mysql如何选择多个表_从两个表mysql中选择多行
  8. 序号47指标横向展示.xlsx_电力监控系统安全防护规定Akey310参数指标
  9. HTCondor下多台Linux计算集群的搭建
  10. 【程序员面试宝典】第五章 程序设计基本概念
  11. git为私有仓库设置密码_Jenkins与Git最佳实践-1
  12. python中报出lxml怎么改_[lxml]遇到非正常字符就中断处理?
  13. 贵阳市建筑物矢量数据(Shp格式+带高度)
  14. VideoPlayer
  15. 高斯混合模型及python代码
  16. 阿里云云盾证书是什么?云盾证书有什么作用?
  17. 告诉你Windows PE 是什么东东?详细介绍一下winpe
  18. 我如何在GitHub Project上获得1,000个星星,以及在此过程中学到的教训
  19. HP惠普打印机驱动安装详解
  20. Microsoft Office 全家桶下载地址

热门文章

  1. 让你的英语发音变得好听(转)
  2. 小学生也会做的2020高考数学题
  3. python在线执行源码_1.2 在线云编辑器:有网络,就能学Python
  4. 教你如何设置微信“拍一拍”用表情包自动回复
  5. 丁林 - 城堡地牢里的抒情诗人
  6. C++数据交换格式库jsoncpp安装与使用详解
  7. pageable分页处理
  8. kde重启_我可以在不注销的情况下重新启动KDE Plasma桌面吗?
  9. 2019多校联讯 test 3 T2
  10. pytorch 模型保存方式(.pt, .pth, .pkl)