2. 容量压测作业平台整体架构:平台核心组件、API网关与权限系统
容量压测作业平台并非单一工具,而是一个由多个核心组件协同工作的分布式系统。理解其整体架构,是后续进行API网关集成与权限设计的基础。本章将从平台工程视角,拆解三大核心组件、API网关的枢纽位置以及权限系统的纵深防御作用。
2.1 平台核心组件:任务调度、数据采集与报告生成
平台采用“控制-执行-分析”三层模型,将压测生命周期拆解为三个独立且可扩展的组件:
| 核心组件 | 职责 | 关键特性 |
|---|---|---|
| 任务调度器 | 管理压测任务的创建、排队、分发与生命周期 | 支持Cron定时、事件触发、分布式锁、任务队列(如Redis Streams) |
| 数据采集器 | 从压测引擎(如JMeter、Locust)实时拉取指标 | 支持Prometheus Remote Write、OpenTelemetry协议、高吞吐写入 |
| 报告生成器 | 聚合原始数据,生成可视化报告与性能分析 | 支持多维度聚合(P50/P95/P99)、对比基线、导出PDF/HTML |
平台工程要点: 三个组件通过事件总线(Event Bus)解耦。任务调度器发出“任务完成”事件后,数据采集器开始拉取,报告生成器随后聚合。这种异步架构避免了组件间的强依赖,提升了平台的可观测性与容错能力。
2.2 API网关在架构中的位置
API网关是平台所有外部流量的统一入口,位于客户端与三个核心组件之间。它承担了路由、限流、认证与协议转换的职责,是平台工程中“南北向流量”的关键管控点。
架构决策: 将API网关置于核心组件之前,而非嵌入某个组件内部,是为了实现“关注点分离”。网关只关心流量管控与安全,核心组件只关心业务逻辑。这种模式在微服务架构中被称为“前端网关模式”(Frontend Gateway Pattern)。
2.3 权限系统的作用
在容量压测平台中,权限系统并非一个独立服务,而是贯穿API网关与核心组件的“安全横切面”。它的核心作用可以归纳为三个层次:
- 身份认证(Authentication): 确认调用者身份。平台支持OAuth 2.0、JWT、等多种方式。API网关负责验证的有效性,拒绝未认证请求。
- 授权决策(Authorization): 决定调用者是否有权执行特定操作。例如,只有“压测管理员”才能创建大规模压测任务,普通“观察者”只能查看报告。
- 审计与追溯(Audit): 记录所有敏感操作(如创建任务、修改配置、删除报告),用于安全审计与故障排查。
常见误区: 不要在核心组件内部重复实现权限校验。正确的做法是:API网关完成认证,权限服务完成授权,核心组件只信任网关传递的已认证上下文(如X-User-Id、X-User-Roles请求头)。这样可以避免权限逻辑分散,降低安全漏洞风险。
2.4 组件间的交互流程
一个典型的压测任务从创建到报告生成,涉及所有核心组件与权限系统的协作:
- 用户发起请求: 客户端通过API网关提交“创建压测任务”请求,携带JWT 。
- 网关认证: API网关验证有效性,提取用户角色信息,转发至权限服务。
- 权限服务授权: 检查用户是否具有“创建任务”权限。若通过,返回授权上下文。
- 任务调度器接收: 网关将请求路由至任务调度器,调度器创建任务并放入队列。
- 数据采集器工作: 任务执行期间,数据采集器从压测引擎拉取指标,写入时序数据库。
- 报告生成器聚合: 任务完成后,报告生成器从数据库读取数据,生成可视化报告。
- 审计记录: 整个过程中,权限服务将“创建任务”、“修改配置”等操作写入审计日志。
平台工程最佳实践: 建议将权限服务的授权结果缓存到API网关层(如使用Redis缓存用户角色与权限策略),避免每次请求都穿透到权限服务。缓存TTL建议设置为5-10分钟,在权限变更时可主动失效。