面试题答案
一键面试基本原理
- 数据冗余:通过将数据复制到多个节点,即使某个节点出现故障,其他节点仍可提供数据服务,保证数据可用性。
- 故障检测与自动故障转移:系统持续监控节点状态,一旦检测到节点故障,自动将工作负载转移到其他健康节点,维持服务不间断。
主要组件
- Shard:存储实际数据的分片,每个Shard可以是一个独立的MongoDB实例或副本集。
- Config Server:存储集群的元数据,包括数据分布信息、Shard信息等。每个集群有多个Config Server,以副本集形式部署,保证元数据的高可用性。
- Query Router (mongos):客户端与集群交互的接口,接收客户端请求,根据Config Server中的元数据,将请求路由到相应的Shard上执行,并将结果返回给客户端。
协同工作机制
- 数据写入:客户端通过mongos发起写请求,mongos从Config Server获取数据分布信息,确定数据应写入的Shard,然后将写请求转发到对应的Shard。如果Shard是副本集,主节点完成写操作后,会将数据同步到副本节点,确保数据冗余。
- 数据读取:客户端通过mongos发起读请求,mongos从Config Server获取元数据,确定数据所在的Shard,然后从Shard的副本集节点(优先从Secondary节点读取以减轻主节点压力)获取数据并返回给客户端。
- 故障处理:当某个Shard节点故障时,副本集内部会自动进行选举,选出新的主节点继续提供服务。同时,Config Server和mongos会感知到Shard状态变化,更新元数据和路由信息,保证请求能正确路由到健康的节点。如果是Config Server故障,副本集机制会自动选举出新的主Config Server,确保元数据服务的可用性。