欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MongoDB源码阅读之Shard源码分析--CongfigServer启动

程序员文章站 2024-01-15 09:23:34
...

1. 名词解释 Shards : 每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程)典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集 Chunks: Chunk是一个来自特殊集合中的一个数据

1. 名词解释

Shards : 每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程)典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集

Chunks: Chunk是一个来自特殊集合中的一个数据范围,美国服务器,(collection,minKey,maxKey)描叙一个chunk,它介于minKey和maxKey范围之间。例如chunks 的maxsize大小是100M,如果一个文件达到或超过这个范围时,会被切分到2个新的chunks中。当一个shard的数据过量时,chunks将会被迁移到其他的shards上。同样,chunks也可以迁移到其他的shards上

Config Servers : Config服务器存储着集群的metadata信息,网站空间,包括每个服务器,每个shard的基本信息和chunk信息Config服务器主要存储的是chunk信息。每一个config服务器都复制了完整的chunk信息。

一个完整的MongoDB集群应该包含多个shards,每个shard包含多个replSets互相做备份。单个数据有大小之分,被分配到不同的Chunk之中。当一个shard的存储空间不够时,会将Chunks分配到其他Shard上。这些信息被分开后都要有所记录,这些记录存储在Congfig Servers上做查询的依据。

从这里开始源码研究的范畴变为mongos。

2. 代码结构

shard.h chunk.h config.h 以上三个对应结构的类。 strategy.h //分配调整策略基类 strategy_shard.cpp //shard分配调整策略的实现 parallel.h //并行传递消息,分片等操作的工具类 server.h //启动configserver的管理类 balance.h //chunk分块的策划者 connpool.h //管理mongos中的各种连接 ,香港服务器租用