gizzard mysql_【MongoDB】在window系统下搭建MongoDB的分片系统(一)
这篇主要讲述分片集群的主要原理 坦白说,刚看到这个分片系统(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的分片系统(一)相关推荐
- windows系统下搭建cloudreve网盘系统
最近博主想搭建属于自己的网盘系统,去github上看了一些开源项目,比较对cloudreve感兴趣,但是github的搭建步骤不全以及网上没有完整的搭建博文,于是,博主想自己搭建cloudreve网盘 ...
- Windows系统下搭建NFS服务器
Windows系统下搭建NFS服务器 在windows系统中采用NFS功能实现文件共享,让Linux系统来访问. 首先在windows系统中安装一个实现NFS功能的第3方软件haneWin ...
- geany配置python_Linux系统下搭建基于Geany+Python开发环境
Linux系统下搭建基于Geany+Python开发环境 一.升级python mkdir /usr/local/python3 # tar xvf Python-3.6.1.tar.xz # 解压文 ...
- Windows系统下搭建MPI环境
Windows系统下搭建MPI环境 MPI的全称是Message Passing Interface即标准消息传递界面,可以用于并行计算.MPI的具体实现一般采用MPICH.下面介绍如何在Window ...
- 如何在Ubuntu系统下搭建Android开发环境
本文记录了如何在Ubuntu 12.04(64bit)系统下搭建Andriod(安卓)开发环境. 1.安装jdk 首先是下载和安装jdk.可以直接去http://java.sun.com下载.我当时下 ...
- Linux系统下搭建BUG管理系统---禅道
Linux系统下搭建BUG管理系统---禅道 事前准备: Linux系统服务器,centos6.5版本 Windows系统本地电脑 禅道压缩包 Xshell4.xftp管理工具 1.安装mysql y ...
- 在Windows系统下搭建ELK日志分析平台
2018年07月11日 22:29:45 民国周先生 阅读数:35 再记录一下elk的搭建,个人觉得挺麻烦的,建议还是在linux系统下搭建,性能会好一些,但我是在windows下搭建的,还是记录一下 ...
- linux 打印当前系统环境_Linux系统下搭建python环境
首先linux系统下一般是自带python2环境的,但是目前大多数项目工程python2是不适用的,今天我们就来讲解下如何在linux系统下搭建python3! 以上是自带的python2,接下来搭建 ...
- Win 10 系统下搭建 Python 编程环境,有手就行
前言 想把一门编程语言学好,会搭建编程环境无疑是有必要的,纵然有线上集成的编程环境,但那高度依赖于网络条件以及诸多情况,这使得我们在编程的时候难以存储自己的资料. 学习和使用 python 一年多以来 ...
最新文章
- android中的回调
- struts+hibernate 分页
- 200G vs 400G:谁是数据中心网络下一站?
- python pandas dataframe 转json_python将相类不同key的json对象转化为pandas的dataframe(上篇)...
- 牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】
- java 基础编程题 5
- mysql如何选择多个表_从两个表mysql中选择多行
- 序号47指标横向展示.xlsx_电力监控系统安全防护规定Akey310参数指标
- HTCondor下多台Linux计算集群的搭建
- 【程序员面试宝典】第五章 程序设计基本概念
- git为私有仓库设置密码_Jenkins与Git最佳实践-1
- python中报出lxml怎么改_[lxml]遇到非正常字符就中断处理?
- 贵阳市建筑物矢量数据(Shp格式+带高度)
- VideoPlayer
- 高斯混合模型及python代码
- 阿里云云盾证书是什么?云盾证书有什么作用?
- 告诉你Windows PE 是什么东东?详细介绍一下winpe
- 我如何在GitHub Project上获得1,000个星星,以及在此过程中学到的教训
- HP惠普打印机驱动安装详解
- Microsoft Office 全家桶下载地址
热门文章
- 让你的英语发音变得好听(转)
- 小学生也会做的2020高考数学题
- python在线执行源码_1.2 在线云编辑器:有网络,就能学Python
- 教你如何设置微信“拍一拍”用表情包自动回复
- 丁林 - 城堡地牢里的抒情诗人
- C++数据交换格式库jsoncpp安装与使用详解
- pageable分页处理
- kde重启_我可以在不注销的情况下重新启动KDE Plasma桌面吗?
- 2019多校联讯 test 3 T2
- pytorch 模型保存方式(.pt, .pth, .pkl)