面试题答案
一键面试影响集群数据一致性的情况
- 网络延迟或故障:主节点与从节点间网络不稳定,导致数据同步延迟或中断。比如主节点已完成写操作,但从节点因网络问题未及时接收数据,此时集群中部分节点数据状态不一致。
- 节点故障:无论是主节点还是从节点发生故障,都可能影响数据同步。若主节点故障,新主节点选举期间,写操作可能无法及时同步;从节点故障则导致数据副本丢失,恢复时可能存在数据不一致。
- 写操作并发冲突:高并发写场景下,主节点处理写请求顺序与从节点同步顺序可能不同,导致数据不一致。例如两个写请求A和B,主节点按A、B顺序处理,但从节点先接收B再接收A,数据状态产生差异。
ElasticSearch保证数据一致性的机制
- 副本机制:每个主分片有多个副本分片,写操作成功需满足一定数量副本写入成功(可配置)。如设置为多数节点写入成功,则能保证在部分节点故障时数据不丢失且一致性相对可靠。
- 版本控制:每次文档更新,版本号递增。主节点同步数据到从节点时,从节点根据版本号判断是否覆盖本地数据,避免旧数据覆盖新数据导致不一致。
- 乐观并发控制:ElasticSearch采用乐观锁机制,每次写操作附带版本号,若版本号匹配则操作成功,否则失败,客户端需重新获取最新版本数据再操作,解决并发冲突问题。
- 主从同步机制:主节点采用同步复制方式将写操作传播到从节点,配置不同的同步策略(如同步到所有副本、同步到多数副本等),确保数据一致性。