mongoDB——split&balance操作
来源:互联网 发布:怎么编程游戏知乎 编辑:程序博客网 时间:2024/06/16 12:27
split&balance整体流程
正如三国中说的,分久必合合久必分、mongoDB数据库也是处于分分合合的动态平衡中。但这里所谓的“合”,只是针对shard所属的chunk块而言的。
split&balance处理示意图:
处理流程
①、发送write请求。
②、数据写之前,检测到chunk块的大小超过了预设值(默认是64MB,可变动),进行split
③、chunk数据信息发生变化,更新config server中的metadata信息
④、由于shard中chunk的个数引发数据不均衡,经过判断,chunk块向相邻的shard中做copy
⑤、由于chunk块位置信息发生变化,再次更新config server中的metadata信息
⑥、删除copy源的chunk块
⑦、反馈write结果
⑧、传送
➈、客户端显示写成功信息
这里为了描述整个流程,特意串行处理了,实际上,逻辑处理时,write操作引发的split跟balance是不同的线程并行去处理的,大家不要误解。
Split
split示意图如下所示:
处理流程:
- chunk的size默认是64MB,可变更的。
- insert/update操作会导致超出chunk的预设大小。
- mongos进程一直开启,检测到后,会将目标chunk分裂成2个等大的新的chunk1和chunk2.
- 分裂成功后,更新config server中metadata的数据。
Balance
示意图如下所示:
处理流程:
#mongos检测到整个集群中chunk块的数据分布不均衡
#mongos检测到整个集群中chunk块的数据分布不均衡
- mongos将moveChunk命令发送到Shard B中
- 内部命令moveChunk在Shard B中执行
- Shard C从Shard B中获取需要移动的chunk块
- 获取后,同期化所有的变动
- 一同期化,立马更新config server中的metadata信息
- chunk的copy成功后,删除Shard B中copy元的chunk块
0 0
- mongoDB——split&balance操作
- mongodb之shard集群 balance操作管理
- POJ1837——Balance
- poj1837——balance
- MongoDB—索引操作
- MongoDB—高级操作
- MongoDB—索引操作
- mongoDB——java操作mongodb文档
- mongoDB——java操作mongodb文档
- mongoDB——java操作mongodb文档
- mongoDB——java操作mongodb文档
- mongodb 禁用auto balance disable auto balance
- MongoDB——数据库操作
- POJ2142——The Balance
- Uva673——Parentheses Balance
- poj1837——Balance(dp)
- MongoDB—细说高级操作
- MongoDB 分布式操作——分片操作
- java的自动包装机制在数组中不能使用的问题
- 设计模式之单例类——如何让一个类只实例化一个对象
- ssm框架搭建一:中文乱码问题
- Java并发:线程安全的容器:同步和并发
- POJ 2282 数位dp
- mongoDB——split&balance操作
- 数字特征值(C语言实现)
- Caffe相关知识记录
- 码农小汪-剑指Offer之27 -连续子数组的最大和
- 15教育技术冯志超之排序了
- HDU 1423 Greatest Common Increasing Subsequence(dp)
- Servlet形成二维码的输出
- 地图定位
- 回归篇-iOS APP上架流程