3. 分片采集基础概念:Shard、Replica、一致性哈希与目标分配原理

在 Prometheus 大规模集群中,单个采集器无法承载成千上万个 ServiceMonitor 目标。分片(Shard)与副本(Replica)机制将采集任务水平拆分,配合一致性哈希实现目标在采集器间的均匀、稳定分配。本节从核心概念出发,逐步拆解分片采集的底层原理。

3.1 Shard 与 Replica:水平拆分与冗余采集

概念 定义 作用 典型配置
Shard(分片) 将采集目标集合按规则拆分为多个子集,每个子集由一个独立的采集器负责 水平扩展采集能力,突破单机采集上限 shards: 3
Replica(副本) 为每个分片创建多个冗余采集实例,同时采集相同目标 提高采集可用性,容忍单点故障 replicas: 2
关键区别: Shard 拆分目标集,每个分片采集不同的目标;Replica 复制采集任务,多个副本采集相同的目标。两者组合使用形成“分片 × 副本”矩阵。

例如,shards: 3 + replicas: 2 将产生 6 个采集器实例:3 个分片各拥有 2 个副本,每个副本独立采集所属分片的目标。

3.2 一致性哈希:目标分配的核心算法

一致性哈希(Consistent Hashing)是分片采集的分配引擎。它将目标与采集器映射到同一个哈希环上,实现以下目标:

  • 均匀分布: 目标在环上均匀散列,避免热点分片。
  • 最小扰动: 分片数变化时,仅重新分配少量目标,而非全量重排。
  • 确定性分配: 相同目标始终分配到相同分片,保证采集一致性。
实践要点: 一致性哈希的虚拟节点(Virtual Node)数量直接影响分配均匀性。在 Prometheus Operator 中,每个采集器默认在环上注册 100 个虚拟节点,以平滑目标分布。
一致性哈希环:目标到分片的分配流程 Shard 1 Shard 2 Shard 3 Shard 4 Target A Target B Target C Target D 分配规则:目标沿环顺时针查找第一个分片节点,即为所属分片

3.3 目标分配原理:从 ServiceMonitor 到采集器

Prometheus Operator 将 ServiceMonitor 中的目标分配到具体采集器的完整链路如下:

  1. 目标发现: Operator 根据 ServiceMonitor 的 selector 匹配 Service 和 Endpoints,生成采集目标列表。
  2. 哈希计算: 对每个目标的唯一标识(如 __address__ + __metrics_path__)计算哈希值。
  3. 环上定位: 将哈希值映射到一致性哈希环,顺时针查找最近的采集器虚拟节点。
  4. 分片归属: 目标被分配到该虚拟节点所属的 Shard。
  5. 副本分发: 每个 Shard 内的所有 Replica 实例都接收该分片的目标列表,独立执行采集。
容量校准关键点: 目标分配不均匀会直接导致部分分片过载。校准时应检查每个分片的目标数量标准差,标准差超过均值 20% 时需调整虚拟节点数或增加分片。
目标分配链路:ServiceMonitor → 采集器 ServiceMonitor 目标列表(N 个) 一致性哈希分配 Shard 1 Shard 2 Shard 3 Replica 1 Replica 2 Replica 1 Replica 2 Replica 1 Replica 2

3.4 分片与副本的容量影响

在容量校准中,Shard 和 Replica 对资源消耗的影响不同:

维度 增加 Shard 增加 Replica
目标数/实例 减少(目标被拆分) 不变(副本采集相同目标)
CPU 总消耗 基本不变(拆分后总计算量相近) 线性增加(每个副本独立计算)
内存总消耗 略有增加(更多实例开销) 线性增加(每个副本独立存储)
网络出口流量 不变(总采集量不变) 线性增加(重复拉取)
可用性 不变(单分片故障仍丢失部分目标) 提升(副本接管故障实例)
校准建议: 优先通过增加 Shard 解决单采集器过载问题,仅在需要高可用保障时增加 Replica。每增加 1 个 Replica,集群总资源消耗约增加 1 倍(对应该分片)。

3.5 一致性哈希的扰动测试

分片数变更时,一致性哈希的“最小扰动”特性可通过以下公式量化:

重分配比例 = (变更后分片数 - 变更前分片数) / 变更后分片数 × 100%

示例:
- 分片数从 3 增加到 4:重分配比例 ≈ (4-3)/4 = 25%
- 分片数从 3 增加到 6:重分配比例 ≈ (6-3)/6 = 50%
- 分片数从 3 减少到 2:重分配比例 ≈ (3-2)/3 ≈ 33%

实际重分配比例受虚拟节点数和目标分布影响,上述公式为理论下限。校准时应监控重分配期间采集器的 CPU 峰值和内存增长,确保不触发 OOM。