面试题答案
一键面试基于心跳检测的容错机制
- 原理:领导者定期向其他节点发送心跳消息,其他节点若在规定时间内未收到心跳,则判定领导者可能故障。
- 应对节点故障:当某个节点未收到领导者心跳,它会发起新一轮选举,选出新的领导者。
- 应对网络分区:在网络分区时,可能部分节点仍能收到心跳,而另一部分收不到。收不到心跳的节点发起选举,若网络分区恢复,可通过一定规则(如比较领导者任期号等)来确定最终领导者。
多数派投票机制
- 原理:选举过程中,节点通过投票选出领导者,只有获得超过半数(多数派)选票的节点才能成为领导者。
- 应对节点故障:即使部分节点发生故障,只要剩余正常节点能组成多数派,就可以正常选举领导者。例如,5个节点的系统,若2个节点故障,剩余3个节点组成多数派仍可完成选举。
- 应对网络分区:在网络分区情况下,只有包含多数派节点的分区能选举出领导者,避免了脑裂问题。较小分区因无法形成多数派,不能选出领导者,待网络恢复后,再进行协调统一。
领导者任期机制
- 原理:每个领导者都有一个任期号,每次选举任期号递增。节点只接受任期号大于当前已知领导者任期号的选举请求。
- 应对节点故障:当领导者故障,新选举产生的领导者任期号更大,其他节点会认可新领导者,即使旧领导者短暂恢复也不会影响新领导者地位。
- 应对网络分区:在网络分区中,不同分区可能各自选举出领导者,但由于任期号不同,当网络恢复时,任期号大的领导者被认可,保证了系统一致性。
故障检测与隔离机制
- 原理:节点通过互相监控状态(如资源使用情况、响应时间等)来检测故障。一旦检测到某个节点故障,将其隔离出选举过程。
- 应对节点故障:快速隔离故障节点,防止其干扰选举过程,保证选举在正常节点间顺利进行。
- 应对网络分区:在网络分区时,隔离掉与本分区失联的节点,避免因等待失联节点响应而影响选举,在分区内尽快完成选举,待网络恢复后重新整合。