面试题答案
一键面试基本原理
- 心跳消息发送:副本集中每个成员会定期(默认2秒)向其他成员发送心跳消息(也叫选举和状态检测消息)。这些消息包含了发送者自身的状态信息,如成员角色(主节点Primary、从节点Secondary等)、数据同步状态、日志时间戳等。
- 消息接收与处理:接收方收到心跳消息后,会验证消息的有效性,并更新对发送方的认知。例如,检查发送方的日志是否比自己新,如果新则可能触发数据同步操作。
- 故障检测:如果在一定时间内(默认10秒,可配置)没有收到某个成员的心跳消息,接收方会将该成员标记为疑似故障。经过进一步确认(如多个成员都检测到该成员无心跳),则判定该成员故障。
在副本集成员状态维护中的作用
- 成员状态监控:通过心跳检测,每个成员实时了解其他成员的状态,如是否正常运行、数据同步情况等。这有助于整个副本集保持对成员健康状态的实时感知。
- 故障检测与自动故障转移:及时发现故障成员,当主节点出现故障时,其他从节点可以根据心跳检测结果,发起选举流程,选举出新的主节点,保证服务的可用性,无需人工干预,实现自动故障转移。
- 数据同步协调:心跳消息中的数据同步状态信息,帮助成员之间协调数据同步过程,确保从节点的数据能及时跟上主节点,维持副本集数据的一致性。