3. 服务目录平台架构
服务目录平台作为容量管理的核心数据底座,其架构设计直接决定了水位数据的准确性、巡检任务的可靠性以及压测流量的可追溯性。本节从整体架构、核心模块、数据流与依赖关系三个维度展开,帮助学员建立对平台全貌的系统认知。
3.1 平台整体架构图
平台采用分层解耦 + 事件驱动的架构风格,自上而下分为接入层、服务层、数据层与基础设施层。各层职责清晰,通过标准 API 与消息队列实现异步解耦。
架构要点:接入层统一对外接口,服务层承载核心业务逻辑,数据层提供持久化与缓存能力,基础设施层保障弹性与高可用。层间通过 API 或消息队列通信,避免强依赖。
3.2 核心模块详解
平台包含三个核心模块:服务注册、元数据管理和监控集成。下表从功能职责、关键接口与数据产出三个维度进行对比。
| 模块 | 功能职责 | 关键接口 | 数据产出 |
|---|---|---|---|
| 服务注册 | 管理服务实例的注册、发现与健康检查 | POST /v1/registerGET /v1/discoverPUT /v1/heartbeat |
实例列表、存活状态、机房分布 |
| 元数据管理 | 维护服务属性、版本、标签与依赖关系 | GET /v1/metadataPATCH /v1/metadataGET /v1/dependencies |
服务拓扑、容量配额、负责人信息 |
| 监控集成 | 对接 Prometheus 等监控系统,采集水位指标 | POST /v1/metricsGET /v1/alertsGET /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 数据流与依赖关系
平台内部数据流分为注册流、指标流和查询流三条主线。下图展示了核心数据流转路径与模块间的依赖关系。
依赖风险提示:元数据管理模块是数据流的中心枢纽,一旦不可用将导致巡检、压测、预测全部中断。建议对元数据存储做跨机房主从部署,并设置本地缓存降级策略。
3.3.1 注册流
- 服务实例启动 → 调用注册接口写入 etcd
- 注册模块异步推送变更事件到消息队列
- 元数据管理模块消费事件,更新服务拓扑与实例列表
- 监控集成模块根据实例列表动态调整指标采集目标
3.3.2 指标流
- 监控系统按分钟粒度推送水位指标到集成模块
- 集成模块做归一化与异常值过滤后写入时序数据库
- 容量巡检模块定时查询时序数据,计算当前水位
- 容量预测模块读取历史指标,执行预测算法
3.3.3 查询流
- 前端或外部系统通过 API 网关发起查询请求
- 服务层根据请求类型路由到对应模块
- 数据层返回结果,服务层做聚合与缓存后响应
关键设计原则:所有数据流遵循“写一次、读多次”原则,避免重复采集。元数据变更通过事件驱动同步,保证各模块数据最终一致。