3. 平台整体架构:前端、后端、调度层、数据层、监控层模块划分,用户角色与权限模型设计
自助容量压测作业平台采用五层分离架构,将交互、业务、调度、存储与观测解耦,确保压测任务从模板创建到一键执行的全链路可扩展、可观测、可管控。本章从模块划分与权限模型两个维度展开,为后续任务模板与一键执行流程奠定架构基础。
3.1 五层架构模块划分
平台自顶向下分为前端展示层、后端服务层、调度执行层、数据持久层与监控告警层,各层职责清晰、接口明确。
| 架构层 | 核心模块 | 主要职责 | 技术选型参考 |
|---|---|---|---|
| 前端展示层 | 任务模板管理、一键执行面板、实时看板、历史报告 | 用户交互、可视化配置、结果展示 | React / Vue3 + ECharts + WebSocket |
| 后端服务层 | 模板服务、执行服务、用户服务、权限校验 | 业务逻辑编排、API 网关、任务校验与分发 | Spring Boot / Go Gin + JWT + RBAC |
| 调度执行层 | 任务队列、分布式调度器、压力机管理 | 任务拆分、并发控制、压力机资源分配 | Kubernetes + Keda / Celery + Redis |
| 数据持久层 | 模板库、任务库、结果库、配置中心 | 结构化存储、时序数据归档、元数据管理 | MySQL + InfluxDB + Redis + MinIO |
| 监控告警层 | 指标采集、链路追踪、告警规则、事件推送 | 压测指标实时采集、异常检测、通知触达 | Prometheus + Grafana + AlertManager |
架构要点:调度执行层是压测平台的"发动机",后端服务层只负责任务编排与校验,不直接操作压力机;数据持久层采用混合存储,热数据(实时指标)走 InfluxDB,冷数据(历史报告)归档至 MinIO。
3.2 核心层交互流程
一次完整的压测执行涉及五层协作,典型时序如下:
- 前端提交任务模板配置或一键执行请求至后端 API 网关。
- 后端校验用户权限、模板完整性,将任务写入数据持久层的任务队列(Redis)。
- 调度层从队列拉取任务,根据压力机资源状态分配执行节点,下发压测脚本与参数。
- 压力机执行压测脚本,实时上报 TPS、响应时间、错误率等指标至监控层。
- 监控层聚合指标,触发告警规则(如 TPS 低于阈值),同时将结果写回数据持久层。
- 后端从数据层读取最终结果,推送至前端实时看板与历史报告页面。
设计原则:后端服务层不直接持有压力机连接,所有调度指令通过消息队列异步传递,避免因压力机故障导致后端阻塞。
3.3 用户角色与权限模型设计
平台采用基于角色的访问控制(RBAC)模型,将权限粒度控制在"模板操作"、"任务执行"、"系统管理"三个维度。共定义四种标准角色:
| 角色 | 权限范围 | 典型操作 | 适用场景 |
|---|---|---|---|
| 访客 | 仅查看公开报告与模板列表 | 浏览、搜索、查看报告摘要 | 跨团队观摩、审计查阅 |
| 压测工程师 | 模板 CRUD、执行个人任务、查看个人报告 | 创建/编辑模板、一键执行、停止任务 | 日常压测执行者 |
| 高级工程师 | 管理公共模板、审批模板发布、查看全量报告 | 模板版本发布、跨团队任务调度 | 压测负责人、技术骨干 |
| 系统管理员 | 用户管理、角色分配、系统配置、压力机管理 | 新增/禁用用户、修改角色、配置告警规则 | 平台运维、安全管控 |
3.4 权限模型核心规则
- 模板隔离:每个模板绑定所属团队与可见范围(私有/团队/公开),压测工程师只能操作私有模板,高级工程师可管理团队模板。
- 执行权限:一键执行按钮受"执行权限"控制,访客无执行入口;压测工程师执行时自动携带用户标识,调度层按用户资源配额分配压力机。
- 审批流程:模板从"编辑中"到"已发布"需高级工程师审批,系统管理员可强制发布或下架。
- 审计日志:所有模板变更、任务执行、权限修改均记录至审计表,支持按时间范围与操作人检索。
3.5 权限校验与数据隔离
在数据持久层,所有模板与任务记录均携带 team_id 与 creator_id 字段。后端服务层在查询时自动追加权限过滤条件:
-- 压测工程师查询模板(仅可见私有 + 所在团队模板)
SELECT * FROM template
WHERE (visibility = 'private' AND creator_id = :current_user_id)
OR (visibility = 'team' AND team_id = :current_user_team_id)
OR (visibility = 'public')
ORDER BY updated_at DESC;
安全提醒:前端不可信任,所有权限校验必须在后端服务层执行。调度层与数据层不直接暴露给前端,避免绕过权限校验直接操作压力机或篡改报告。
3.6 架构与权限的协同设计
五层架构与 RBAC 模型并非独立设计,二者在以下关键点深度耦合:
- 调度层资源配额:系统管理员可在后端配置"角色-压力机配额"映射,高级工程师可调度 10 台压力机,压测工程师仅可调度 3 台,调度层从 JWT 中解析角色后分配资源。
- 监控层告警隔离:压测工程师只能看到自己任务的实时指标,高级工程师可查看团队维度聚合看板,系统管理员可查看全平台健康状态。
- 审计日志归属:所有跨层操作(如调度层停止任务、数据层删除模板)均记录操作人 ID,审计日志存储在数据持久层独立表中,仅系统管理员可查询。
通过上述架构与权限模型的协同设计,自助容量压测作业平台在满足多团队、多角色协作需求的同时,保障了压测任务的安全隔离与资源可控性,为一键执行流程提供了坚实的底层支撑。