Elasticsearch分布式的一点理解,探究为啥是AP类型

136 阅读3分钟

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. 分布式写入流程

  1. 客户端向协调节点发送写入请求。
  2. 协调节点根据文档 ID 计算目标分片(通过哈希算法)。
  3. 协调节点将请求转发到目标分片所在的主分片节点。
  4. 主分片节点写入数据,并将数据同步到副本分片。
  5. 副本分片写入成功后,主分片节点返回成功响应给协调节点。
  6. 协调节点返回成功响应给客户端。

4. 分布式读取流程

  1. 客户端向协调节点发送读取请求。
  2. 协调节点根据文档 ID 计算目标分片。
  3. 协调节点将请求转发到目标分片的主分片或副本分片节点。
  4. 目标节点返回数据给协调节点。
  5. 协调节点返回数据给客户端。

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),可以在一定程度上平衡一致性和可用性。