面试题答案
一键面试基本策略
- 多副本存储:在ElasticSearch中,通过将数据复制到多个副本,使用PacificA算法确保这些副本之间的数据一致性。每个主分片有多个副本分片,分布在不同的节点上,以此提供数据冗余和高可用性。
- 基于日志的复制:PacificA算法依赖预写式日志(Write - Ahead Log,WAL)。所有的写操作首先会记录到日志中,日志作为数据变更的记录,用于故障恢复和副本同步。
机制
- 选举主副本:集群会选举出一个主副本,只有主副本能够接收写请求。其他副本作为从副本,从主副本同步数据。这种主从架构简化了数据写入的一致性管理。
- 同步复制:主副本接收到写请求后,会将数据变更同步到一定数量的从副本(可配置)。只有当足够数量(一般是多数,即超过一半的副本)的副本成功同步数据后,主副本才会向客户端返回写成功的响应。这确保了数据在多个副本上的一致性。
- 故障检测与恢复:集群持续监控各个节点和副本的状态。如果某个副本所在节点发生故障,集群会自动检测到,并从其他正常的副本中重新选举出新的副本,以维持副本数量和数据一致性。故障节点恢复后,会根据日志进行数据同步,使其追上集群中最新的数据状态。
- 版本控制:为每个数据变更分配一个版本号,副本在同步数据时会检查版本号。如果版本号不一致,说明数据可能存在冲突,副本会根据版本号和日志记录来协调并解决冲突,确保最终数据的一致性。