MST
星途 面试题库

面试题:ElasticSearch 近实时搜索分布式架构中的数据同步机制

在 ElasticSearch 近实时搜索的分布式架构中,数据在不同节点之间如何保持同步以确保近实时性?请详细说明其涉及的主要流程和关键技术点,比如复制和分片机制是如何协同工作的。
40.2万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

主要流程

  1. 数据写入
    • 客户端发送写请求到任意一个节点,该节点称为协调节点。
    • 协调节点根据文档的路由规则(通常基于文档的ID),确定文档应写入的主分片所在的节点。
    • 将请求转发到对应的主分片所在节点。
  2. 主分片写入
    • 主分片所在节点接收到写请求后,将数据写入到内存中的分段(Segment),同时写入事务日志(Translog)。
    • 分段达到一定条件(如大小或时间)后,会被刷新(Flush)到磁盘,形成持久化的段文件。
  3. 副本分片同步
    • 主分片写入成功后,会向其所有副本分片所在节点发送复制请求。
    • 副本分片接收到复制请求后,同样将数据写入内存中的分段和事务日志。
    • 副本分片写入成功后,向主分片所在节点发送确认消息。
    • 当所有副本分片都确认写入成功后,主分片所在节点向协调节点发送确认消息,协调节点再向客户端返回成功响应。

关键技术点

  1. 分片机制
    • 数据分布:Elasticsearch 将索引数据划分为多个分片,每个分片是一个独立的 Lucene 索引。这样可以将数据分散存储在不同节点上,提高存储和查询的并行处理能力。例如,一个大索引可能被分成 5 个分片,每个分片存储部分数据,分布在不同的物理节点上。
    • 负载均衡:通过分片,查询请求可以并行发送到多个分片,提高查询性能。当有新节点加入集群时,分片会自动重新分配,以保持集群的负载均衡。
  2. 复制机制
    • 高可用性:每个主分片都有一个或多个副本分片,副本分片是主分片的拷贝。当主分片所在节点发生故障时,副本分片可以提升为主分片,确保数据的可用性。例如,一个主分片有 2 个副本分片,这样即使主分片所在节点宕机,也能从副本分片中恢复数据。
    • 数据同步:主分片和副本分片之间通过复制机制保持数据同步。如上述流程中,主分片写入成功后会主动将数据复制到副本分片,保证副本分片的数据与主分片一致。
  3. 近实时性相关技术
    • Translog:事务日志记录了所有的写操作,即使分段还未持久化到磁盘,在节点故障重启时,也可以通过重放 Translog 恢复数据,确保数据不丢失。同时,Translog 也用于异步刷新数据到磁盘,保证近实时性。
    • Refresh:定期将内存中的分段刷新到磁盘,默认每隔 1 秒执行一次。刷新后的数据就可以被搜索到,从而实现近实时搜索。但频繁刷新会影响性能,可根据实际需求调整刷新间隔。