ES如何支撑亿级检索量?核心架构图给你讲透!

ES是大型架构核心,下面我详解ES如何支撑亿级检索@mikechen

ES亿级架构

Elasticsearch 能支撑亿级检索量,不是靠单点性能,而是靠以下四个核心设计。

ES如何支撑亿级检索量?核心架构图给你讲透!-mikechen

┌─────────────┐
│ Client │
└──────┬──────┘
│
┌──────▼──────┐
│ Coordinator │ ← 协调节点(无数据也可)
└──────┬──────┘
┌────────────┼────────────┐
│ │ │
┌──────▼──────┐┌─────▼──────┐┌─────▼──────┐
│ Data Node A ││ Data Node B ││ Data Node C │
│ Shard 0P ││ Shard 1P ││ Shard 2P │
│ Shard 1R ││ Shard 2R ││ Shard 0R │
└─────────────┘└─────────────┘└─────────────┘

分片(Shard)水平拆分数据,天然横向扩展。

倒排索引 + Segment 不可变结构,保证查询效率。

分布式 Query/FETCH 两阶段执行模型。

多副本 + 协调节点(Coordinator)实现高并发与高可用。

 

水平拆分数据

首先,通过分片(Shard),把索引水平拆分为多个子索引,使数据天然能够横向扩展。

ES如何支撑亿级检索量?核心架构图给你讲透!-mikechen

每个分片作为独立的倒排索引单元,可分布在不同节点上。

新增节点即可接管更多分片,从而线性提升处理能力与存储容量。

比如:当一个索引被拆分为: 10 个分片分布在 5 台机器上时。

一次查询请求,会被分发到这 10 个分片上并行执行,这相当于将检索压力平摊到了 5 台机器的 CPU 和磁盘上。

 

倒排索引

其次,倒排索引、与不可变的 Segment ,设计确保了高效查询。

ES如何支撑亿级检索量?核心架构图给你讲透!-mikechen

倒排索引,提供快速的反向映射以定位文档,Segment 的不可变性简化了并发访问与合并策略。

从而,减少锁竞争并提高 IO 利用率,使查询在海量文档中仍能保持低延迟。

 

分布式模型

再次,Elasticsearch 采用分布式的两阶段执行模型(Query/FETCH)。

ES如何支撑亿级检索量?核心架构图给你讲透!-mikechen

查询阶段,在各分片上并行执行以收集候选文档与评分。

随后集中汇总排序并确定最终命中集合,最后在 FETCH 阶段按需抓取完整文档。

这一模型将计算与数据传输分离,既降低了网络开销,又提升了并行度与准确性。

 

多副本节点

最后,多副本机制与协调节点(Coordinator)共同保障高并发与高可用性。

ES如何支撑亿级检索量?核心架构图给你讲透!-mikechen

副本不仅用于故障恢复,也用于分摊读请求。

协调节点负责将查询分发至相关分片、合并结果并返回客户端,从而实现负载均衡与稳定的请求处理。

综上所述,Elasticsearch 通过分片横向扩展、倒排索引与 Segment 的高效存储。

以及,两阶段分布式执行以及多副本与协调机制,协同支撑起对亿级检索量的可靠服务能力。

mikechen睿哥

10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。

评论交流
    说说你的看法