3. 值班台架构概览:微服务拓扑、核心链路识别、数据流与依赖关系

值班台作为平台工程的核心可观测性入口,其自身架构必须满足高可用、低延迟与可扩展的要求。本章从微服务拓扑、核心链路、数据流与依赖关系四个维度,拆解值班台的整体架构设计。

3.1 微服务拓扑总览

值班台采用微服务架构,按职责划分为四层:接入层、聚合层、存储层与通知层。各层通过 gRPC 或异步消息队列通信,避免单点瓶颈。

架构原则:每一层均部署至少 2 个副本,跨可用区分布;关键服务(如告警引擎、Trace 聚合器)采用 Leader/Follower 选举机制。
值班台微服务拓扑架构图 值班台微服务拓扑架构图 接入层 API Gateway WebSocket Hub Auth Proxy Rate Limiter 聚合层 Trace 聚合器 告警引擎 指标计算器 事件关联器 (Leader/Follower) (Leader/Follower) 存储层 Elasticsearch 集群 Prometheus TSDB Redis 缓存 消息队列 (Kafka) 通知层 邮件/短信 即时通讯 (IM) 电话告警 Webhook

3.2 核心链路识别

在值班台的数十个微服务中,以下三条链路对高可用性影响最大,必须优先保障:

链路名称 涉及服务 SLO 目标 故障影响
Trace 采集与存储链路 Agent → Trace 聚合器 → Kafka → ES P99 延迟 < 2s Trace 数据丢失,无法排查故障
告警触发与通知链路 告警引擎 → 事件关联器 → 通知层 P99 延迟 < 10s 告警延迟或漏报,值班响应失效
实时看板数据链路 WebSocket Hub → 指标计算器 → Redis → 前端 P99 延迟 < 1s 看板卡顿,值班员无法实时感知
设计要点:核心链路中的每个中间件(Kafka、Redis、ES)均采用集群模式,并配置熔断与降级策略。例如,当 ES 写入积压时,Trace 聚合器自动降级为本地文件缓存,待恢复后回放。

3.3 数据流与依赖关系

值班台的数据流分为上行数据流(从被监控系统到值班台)与下行数据流(值班台内部处理与通知)。依赖关系则体现为服务间的同步/异步调用与数据一致性要求。

3.3.1 上行数据流

  1. Agent 采集:部署在各业务节点的 Agent 通过 OTLP 协议上报 Trace、Metrics、Logs。
  2. 接入层路由:API Gateway 根据请求类型分发至对应的聚合服务。
  3. 聚合与缓冲:Trace 聚合器对 Span 进行采样与合并,写入 Kafka 缓冲;指标计算器实时聚合 Metrics 并写入 Redis。
  4. 持久化:Kafka Consumer 将 Trace 数据批量写入 Elasticsearch;Prometheus 从指标计算器拉取数据。

3.3.2 下行数据流

  1. 告警检测:告警引擎定期查询 ES 与 Prometheus,匹配告警规则。
  2. 事件关联:事件关联器合并重复告警,生成故障事件。
  3. 通知分发:通知层根据事件级别与值班排班表,通过多渠道推送。
  4. 前端渲染:WebSocket Hub 将实时数据推送至值班看板。
值班台数据流与依赖关系图 值班台数据流与依赖关系图 被监控系统 Agent (OTLP) 接入层 聚合层 存储层 (ES/Redis) 告警引擎 通知层 前端看板 依赖关系说明 实线:同步调用 虚线:异步/缓存推送 所有链路均配置熔断

3.4 依赖关系矩阵

下表列出值班台核心服务间的依赖关系与故障传播影响:

上游服务 下游服务 调用方式 故障影响范围 降级策略
Agent Trace 聚合器 gRPC 同步 Trace 采集中断 Agent 本地缓存,重试回放
Trace 聚合器 Kafka 异步生产 Trace 数据堆积 限流降级,丢弃低优先级 Span
告警引擎 Elasticsearch 同步查询 告警检测延迟 切换至 Prometheus 查询
事件关联器 通知层 异步消息 通知延迟 消息队列持久化,消费端幂等
WebSocket Hub Redis 同步订阅 看板数据中断 前端轮询降级至 REST API
关键依赖风险:Elasticsearch 与 Kafka 是值班台的两大状态依赖。ES 故障会导致 Trace 查询与告警规则匹配不可用;Kafka 故障则阻塞所有异步数据流。生产环境必须为这两个组件部署跨可用区集群,并配置自动故障转移。

3.5 架构设计要点总结

  • 无状态优先:接入层与聚合层服务均设计为无状态,通过 K8s HPA 自动扩缩。
  • 异步解耦:核心链路使用 Kafka 或 Redis Stream 做异步缓冲,避免级联故障。
  • 熔断与降级:每个服务依赖外部组件时均配置熔断器(如 Hystrix 或 Sentinel),并定义明确的降级返回值。
  • 可观测性自监控:值班台自身 Trace 与 Metrics 通过独立 Agent 上报至另一套存储集群,避免与业务数据互相影响。