Elasticsearch分布式的一点理解,探究为啥是AP类型:
Elasticsearch 分布式实现
Elasticsearch 是一个分布式搜索引擎,其分布式实现基于以下核心机制:
1. 分布式架构
Elasticsearch 的分布式架构包括以下组件:
-
节点(Node) :一个 Elasticsearch 实例,可以是数据节点、主节点或协调节点。
-
集群(Cluster) :多个节点的集合,协同工作。
-
索引(Index) :数据的逻辑集合,类似于数据库中的表。
-
分片(Shard) :索引的分区,支持水平扩展。
- 主分片(Primary Shard) :负责数据写入和读取。
- 副本分片(Replica Shard) :主分片的备份,提供高可用性和负载均衡。
2. 分布式实现图解
以下是 Elasticsearch 分布式架构的示意图:
复制
+---------------------------------------------------+
| Elasticsearch Cluster |
| |
| +----------------+ +----------------+ |
| | Node 1 | | Node 2 | |
| | +------------+ | | +------------+ | |
| | | Index A | | | | Index A | | |
| | | - Shard 1 | | | | - Shard 2 | | |
| | | - Shard 2R | | | | - Shard 1R | | |
| | +------------+ | | +------------+ | |
| +----------------+ +----------------+ |
| |
| +----------------+ |
| | Node 3 | |
| | +------------+ | |
| | | Index B | | |
| | | - Shard 1 | | |
| | | - Shard 2R | | |
| | +------------+ | |
| +----------------+ |
+---------------------------------------------------+
- Index A 被分成两个主分片(Shard 1 和 Shard 2),每个主分片有一个副本分片(Shard 1R 和 Shard 2R)。
- 分片分布在不同的节点上,实现数据的高可用性和负载均衡。
3. 分布式写入流程
- 客户端向协调节点发送写入请求。
- 协调节点根据文档 ID 计算目标分片(通过哈希算法)。
- 协调节点将请求转发到目标分片所在的主分片节点。
- 主分片节点写入数据,并将数据同步到副本分片。
- 副本分片写入成功后,主分片节点返回成功响应给协调节点。
- 协调节点返回成功响应给客户端。
4. 分布式读取流程
- 客户端向协调节点发送读取请求。
- 协调节点根据文档 ID 计算目标分片。
- 协调节点将请求转发到目标分片的主分片或副本分片节点。
- 目标节点返回数据给协调节点。
- 协调节点返回数据给客户端。
CAP 理论中的 Elasticsearch
CAP 理论指出,分布式系统无法同时满足以下三个特性:
- C(Consistency) :一致性,所有节点在同一时间看到相同的数据。
- A(Availability) :可用性,每个请求都能收到响应。
- P(Partition Tolerance) :分区容错性,系统在网络分区时仍能正常运行。
Elasticsearch 在 CAP 理论中的定位如下:
1. Partition Tolerance (P)
Elasticsearch 是一个分布式系统,天生支持分区容错性。即使发生网络分区,集群仍能继续运行。
2. Availability (A)
Elasticsearch 优先保证可用性。即使部分节点不可用,集群仍能处理读写请求。例如:
- 如果主分片不可用,副本分片可以接管请求。
- 如果部分节点不可用,其他节点仍能提供服务。
3. Consistency (C)
Elasticsearch 在一致性上做了权衡:
- 写入一致性:默认情况下,ES 使用
quorum机制(多数副本写入成功)来保证一致性。 - 读取一致性:ES 支持
replication和refresh机制,但可能存在短暂的延迟(近实时搜索)。
4. Elasticsearch 的 CAP 类型
Elasticsearch 属于 AP 系统:
- 优先保证 可用性(A) 和 分区容错性(P) 。
- 在一致性(C)上做了妥协,支持最终一致性。
- Elasticsearch 的分布式实现基于分片和副本机制,支持水平扩展和高可用性。
- 在 CAP 理论中,Elasticsearch 属于 AP 系统,优先保证可用性和分区容错性,支持最终一致性。
- 通过合理的配置(如
quorum和replication),可以在一定程度上平衡一致性和可用性。