面试题答案
一键面试1. ETCD
- 应对网络分区:
- 技术原理:ETCD基于Raft一致性算法。在网络分区时,Raft算法会将集群节点分为不同的分区。正常情况下,Raft集群通过选举产生一个领导者(Leader)负责处理客户端的写请求。当发生网络分区后,如果领导者所在的分区包含多数节点(超过半数),那么该分区的节点依然可以继续提供服务,保持数据的一致性和可用性。而少数节点的分区由于无法形成多数派,不能产生新的领导者,也就无法处理写请求,从而避免了数据不一致问题。例如,一个5节点的ETCD集群,若网络分区后,一个分区有3个节点,另一个分区有2个节点,有3个节点的分区能继续正常工作,2个节点的分区无法进行写操作。
- 应对节点故障:
- 技术原理:当某个节点发生故障时,Raft算法会触发新一轮的选举。集群中的其他节点会检测到故障节点的心跳消失,然后开始投票选举新的领导者。在选举过程中,每个节点会根据自己保存的日志信息来投票,选择日志最完整的节点作为新的领导者。新的领导者当选后,会与其他节点进行数据同步,确保所有节点的数据一致性。比如,若一个节点故障,剩余节点会进行选举,新领导者会让其他节点追加自己的日志,达到数据一致。
2. Nacos
- 应对网络分区:
- 技术原理:Nacos支持AP(可用性优先)和CP(一致性优先)两种模式。在AP模式下,Nacos采用Distro协议。当发生网络分区时,每个分区内的节点都可以独立提供服务,以保证配置数据的可用性。各个分区内的节点会在本地维护数据副本,即使与其他分区失去联系,也能继续为本地客户端提供配置数据。不过,这种模式下不同分区的数据可能在一段时间内存在不一致情况,直到网络恢复后进行数据同步。在CP模式下,Nacos采用Raft协议,与ETCD类似,通过多数派来保证数据的一致性和可用性。例如,在AP模式下,网络分区后两个分区的Nacos节点都能提供配置读取服务,但数据可能暂时不同步。
- 应对节点故障:
- 技术原理:在AP模式下,当某个节点故障时,其他节点可以继续提供服务,因为每个节点都有本地数据副本,对整体可用性影响较小。故障节点恢复后,会从其他节点同步数据,达到最终一致性。在CP模式下,与ETCD类似,节点故障会触发Raft选举,选举出新的领导者,新领导者会与其他节点同步数据以保证一致性。例如,AP模式下一个节点故障,其他节点不受影响,故障节点恢复后从其他节点同步数据。