面试题答案
一键面试数据同步机制
- 基于版本号:
- ElasticSearch 文档本身有版本号机制。主分片在每次文档更新时,版本号递增。副分片在复制主分片数据时,也会获取到版本号。通过对比主副分片同一文档的版本号,可判断数据是否一致。
- 例如,主分片上文档版本号为5,副分片上对应文档版本号也应为5,若不一致则说明存在数据同步问题。
- 同步队列:
- 主分片将数据变更操作(增、删、改)放入一个同步队列中,然后按顺序将这些操作发送给副分片。
- 副分片按接收顺序执行这些操作,从而保证数据一致性。同时,副分片完成操作后返回确认信息给主分片。
- 心跳检测与数据补发:
- 主副分片之间定时发送心跳包。如果主分片一段时间内未收到某个副分片的心跳,就认为该副分片可能出现问题。
- 主分片可补发未确认的操作给该副分片,以确保数据同步。
故障恢复策略
- 数据中心故障:
- 切换读写:若某个数据中心发生故障,立即将读请求切换到其他正常数据中心的副分片。对于写请求,先缓存起来,待故障数据中心恢复或数据重新分配后再执行。
- 数据恢复:当故障数据中心恢复后,从其他数据中心的主分片或副分片复制缺失的数据。可以利用ElasticSearch的内置恢复机制,它会自动根据版本号和操作日志进行数据同步。
- 节点故障:
- 重新分配分片:ElasticSearch会自动检测到节点故障,并将该节点上的主分片和副分片重新分配到其他健康节点上。
- 数据恢复:新分配到分片的节点会从其他拥有该分片副本的节点复制数据,以恢复到最新状态。
监控指标的选取和分析
- 主副分片版本一致性指标:
- 指标:统计主副分片版本号不一致的文档数量。
- 分析:该指标直接反映了数据一致性问题。如果数量持续增加,说明数据同步机制可能出现故障,需要检查同步队列、网络连接等。
- 同步延迟指标:
- 指标:记录主分片操作时间与副分片完成相同操作时间的差值。
- 分析:延迟过高可能是网络延迟、节点负载过高导致。若延迟突然增大,要排查网络故障或节点资源是否耗尽。
- 心跳丢失率指标:
- 指标:计算在一段时间内,主分片未收到副分片心跳的次数占总心跳次数的比例。
- 分析:心跳丢失率高,表明主副分片之间的连接不稳定,可能是网络波动或节点故障的前期征兆,需及时处理。
- 故障恢复时间指标:
- 指标:记录从检测到故障到数据恢复到可用状态的时间。
- 分析:该指标反映了系统的故障恢复能力。若恢复时间过长,影响业务正常运行,需要优化故障恢复策略。