3. 服务目录平台架构

服务目录平台作为容量管理的核心数据底座,其架构设计直接决定了水位数据的准确性、巡检任务的可靠性以及压测流量的可追溯性。本节从整体架构、核心模块、数据流与依赖关系三个维度展开,帮助学员建立对平台全貌的系统认知。

3.1 平台整体架构图

平台采用分层解耦 + 事件驱动的架构风格,自上而下分为接入层、服务层、数据层与基础设施层。各层职责清晰,通过标准 API 与消息队列实现异步解耦。

服务目录平台整体分层架构 接入层 RESTful API 网关 | gRPC 代理 | WebSocket 推送 | 统一鉴权 负责外部系统(CMDB、监控、压测平台)的协议适配与请求路由 服务层(核心模块) 服务注册 实例管理 · 健康检查 元数据管理 属性定义 · 版本控制 监控集成 指标采集 · 告警联动 数据层 关系型存储(MySQL/PostgreSQL)| 时序数据库(Prometheus/InfluxDB) 缓存(Redis)| 消息队列(Kafka/RabbitMQ) 基础设施层 Kubernetes 集群 | 容器网络 | 持久化存储 | 服务网格(Istio)
架构要点:接入层统一对外接口,服务层承载核心业务逻辑,数据层提供持久化与缓存能力,基础设施层保障弹性与高可用。层间通过 API 或消息队列通信,避免强依赖。

3.2 核心模块详解

平台包含三个核心模块:服务注册、元数据管理和监控集成。下表从功能职责、关键接口与数据产出三个维度进行对比。

模块 功能职责 关键接口 数据产出
服务注册 管理服务实例的注册、发现与健康检查 POST /v1/register
GET /v1/discover
PUT /v1/heartbeat
实例列表、存活状态、机房分布
元数据管理 维护服务属性、版本、标签与依赖关系 GET /v1/metadata
PATCH /v1/metadata
GET /v1/dependencies
服务拓扑、容量配额、负责人信息
监控集成 对接 Prometheus 等监控系统,采集水位指标 POST /v1/metrics
GET /v1/alerts
GET /v1/thresholds
CPU/内存/连接数水位、告警事件

3.2.1 服务注册

服务注册模块是平台的数据入口,负责接收服务实例的上报信息。每个实例启动时调用注册接口,携带 IP、端口、机房、版本等元数据;随后每 30 秒发送心跳维持在线状态。注册中心基于 etcd 实现,保证强一致性与高可用。

3.2.2 元数据管理

元数据管理模块维护服务的静态属性(如服务名、owner、SLA 等级)与动态属性(如当前容量水位、限流阈值)。支持版本化变更,每次修改生成变更记录,便于审计与回滚。元数据是后续容量预测与压测沙盘的核心输入。

3.2.3 监控集成

监控集成模块通过 Prometheus Remote Write 协议接收水位指标,同时支持从 Alertmanager 拉取告警事件。集成层对指标做归一化处理(如统一单位、聚合粒度),存入时序数据库供巡检与预测使用。

实践建议:监控集成模块应设计为可插拔适配器模式,便于对接不同监控系统(如 Zabbix、Datadog)。建议在集成层做指标缓存,避免频繁查询后端存储。

3.3 数据流与依赖关系

平台内部数据流分为注册流、指标流和查询流三条主线。下图展示了核心数据流转路径与模块间的依赖关系。

数据流与依赖关系 服务实例 注册/心跳 监控系统 指标/告警 服务注册 etcd 存储 元数据管理 MySQL + Redis 监控集成 时序数据库 容量巡检 水位计算 压测沙盘 流量模拟 容量预测 趋势分析
依赖风险提示:元数据管理模块是数据流的中心枢纽,一旦不可用将导致巡检、压测、预测全部中断。建议对元数据存储做跨机房主从部署,并设置本地缓存降级策略。

3.3.1 注册流

  1. 服务实例启动 → 调用注册接口写入 etcd
  2. 注册模块异步推送变更事件到消息队列
  3. 元数据管理模块消费事件,更新服务拓扑与实例列表
  4. 监控集成模块根据实例列表动态调整指标采集目标

3.3.2 指标流

  1. 监控系统按分钟粒度推送水位指标到集成模块
  2. 集成模块做归一化与异常值过滤后写入时序数据库
  3. 容量巡检模块定时查询时序数据,计算当前水位
  4. 容量预测模块读取历史指标,执行预测算法

3.3.3 查询流

  1. 前端或外部系统通过 API 网关发起查询请求
  2. 服务层根据请求类型路由到对应模块
  3. 数据层返回结果,服务层做聚合与缓存后响应
关键设计原则:所有数据流遵循“写一次、读多次”原则,避免重复采集。元数据变更通过事件驱动同步,保证各模块数据最终一致。