MST

星途 面试题库

面试题:ElasticSearch 数据副本模型基本写入并发控制的机制简述

请简要描述 ElasticSearch 数据副本模型中,基本写入操作时的并发控制机制是如何实现的,包括涉及到的主要组件和大致流程。
32.2万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. 主要组件
    • 主分片(Primary Shard):负责处理文档的写入操作,并协调副本分片(Replica Shard)的同步。
    • 副本分片(Replica Shard):复制主分片的数据,提供高可用性和读负载均衡。
    • 集群状态(Cluster State):包含集群的元数据信息,如节点信息、索引信息、分片分配等,用于各节点协调操作。
  2. 大致流程
    • 接收写入请求:客户端发送写入请求到集群中的任意一个节点,该节点称为协调节点(Coordinating Node)。
    • 路由到主分片:协调节点根据文档的 ID,通过哈希算法计算出该文档应该被写入到哪个主分片,然后将请求转发到对应的主分片所在的节点。
    • 主分片写入:主分片所在节点接收请求并写入数据,写入成功后,主分片会并行地将数据复制到其所有副本分片。
    • 副本分片写入:副本分片接收到来自主分片的数据后进行写入操作。每个副本分片写入成功后,会向主分片发送确认消息。
    • 确认响应:当主分片收到所有副本分片的确认消息后,认为此次写入操作成功,然后向协调节点返回成功响应。协调节点再将成功响应返回给客户端。
  3. 并发控制
    • 乐观并发控制:Elasticsearch 使用版本号来实现乐观并发控制。每个文档都有一个版本号,每次文档更新时版本号递增。当写入请求到达时,主分片会检查文档当前版本号与请求中携带的版本号是否匹配。如果匹配,则执行写入操作并递增版本号;如果不匹配,说明文档在其他地方已被修改,此次写入请求失败,客户端可以根据情况选择重试。
    • 写入队列:每个分片(主分片和副本分片)都有一个写入队列,用于存储待处理的写入请求。当一个请求到达时,会被放入队列中按顺序处理,保证同一时间只有一个写入操作在分片上执行,避免并发写入冲突。