面试题答案
一键面试节点参与
- 主节点(Primary):负责处理客户端的读写操作。
- 从节点(Secondary):复制主节点的数据,作为备份,可用于读操作。
- 仲裁节点(Arbiter):不存储数据,仅参与选举过程,帮助确定新的主节点。
主要步骤
- 心跳检测
- 副本集中每个节点通过心跳机制(默认2秒一次)相互监测状态。主节点向从节点和仲裁节点发送心跳消息,从节点也向主节点和其他从节点发送心跳。
- 故障检测
- 如果从节点在10秒内(可配置)没有收到主节点的心跳,从节点会认为主节点可能发生故障。
- 从节点会发起选举流程。
- 选举流程
- 符合选举条件的从节点(如数据最新、优先级合适等)会向其他节点发送选举请求(VoteRequest)。
- 收到选举请求的节点(包括仲裁节点)根据一定规则(如数据一致性、节点优先级等)决定是否投票。
- 一个节点必须获得大多数节点(超过副本集节点数一半)的投票才能成为新的主节点。
- 故障恢复
- 新的主节点选举出来后,会通知其他节点,整个副本集进入新的主从状态。
- 故障的主节点恢复后,会作为从节点加入到副本集,重新开始复制新主节点的数据。