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