为了后续单独描述chunk块的balance&split的处理流程,此处不涉及。但别误解两者并非没有关联关系。
Read&Write
mongoDB给我的感觉就是,一根肠子通到地,所有的处理就是看似有点单线程的意思。示意图如下:
处理流程:
事前处理
Ⅰ、集群启动后,config server获取到整个集群的metadata,为之后寻址做准备。
#数据插入,更新,删除的场合,metadata会更新,chunk中数据更新之前,都会将最新的数据更新到config server中。
请求处理
①、客户端发送read&write请求
②、通过driver将请求传送到router server中
③、router server解析用户的请求
④、根据config server中存储的metadata,寻址shard对应的chunk块,以及目标数据的具体位置
⑤、向所有关联shard发送read&write请求
⑥、各个shard反馈read&write结果信息
⑦、查询结果分布在多个shard的场合,router server合并查询数据
⑧、通过driver反馈结果信息
➈、客户端显示最新的结果