MongoDB 分片集群的三个主要组件是什么?
MongoDB 分片集群(Sharded Cluster)由以下三个主要组件组成:
1. Shard(分片)
- 作用:存储实际的数据。
- 详情:每个分片只保存集群总数据的一部分(子集)。为了保证高可用性和数据一致性,在生产环境中,每个分片通常都是一个副本集(Replica Set)。
2. Config Server(配置服务器)
- 作用:存储集群的元数据和配置信息。
- 详情:元数据包含了数据块(Chunk)与分片的映射关系。
mongos路由进程需要通过配置服务器来知道数据具体存放在哪个分片上。从 MongoDB 3.4 版本开始,配置服务器必须部署为副本集(CSRS)。
3. mongos(查询路由)
- 作用:作为客户端和分片集群之间的接口。
- 详情:
mongos本身不存储数据。应用程序直接连接到mongos,而不是直接连接到分片。mongos根据配置服务器的元数据,将客户端的读写请求路由到正确的分片上,并将各个分片返回的结果进行聚合,最后返回给客户端。
简单总结它们的关系:
应用程序连接 mongos -> mongos 询问 Config Server 数据在哪里 -> mongos 去对应的 Shard 存取数据。