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。
自助容量压测平台五层架构 前端展示层 任务模板管理 · 一键执行面板 · 实时看板 · 历史报告 后端服务层 模板服务 · 执行服务 · 用户服务 · 权限校验 调度执行层 任务队列 · 分布式调度器 · 压力机管理 数据持久层 MySQL · InfluxDB · Redis · MinIO 监控告警层 Prometheus · Grafana · AlertManager 数据流方向

3.2 核心层交互流程

一次完整的压测执行涉及五层协作,典型时序如下:

  1. 前端提交任务模板配置或一键执行请求至后端 API 网关。
  2. 后端校验用户权限、模板完整性,将任务写入数据持久层的任务队列(Redis)。
  3. 调度层从队列拉取任务,根据压力机资源状态分配执行节点,下发压测脚本与参数。
  4. 压力机执行压测脚本,实时上报 TPS、响应时间、错误率等指标至监控层。
  5. 监控层聚合指标,触发告警规则(如 TPS 低于阈值),同时将结果写回数据持久层。
  6. 后端从数据层读取最终结果,推送至前端实时看板与历史报告页面。
设计原则:后端服务层不直接持有压力机连接,所有调度指令通过消息队列异步传递,避免因压力机故障导致后端阻塞。

3.3 用户角色与权限模型设计

平台采用基于角色的访问控制(RBAC)模型,将权限粒度控制在"模板操作"、"任务执行"、"系统管理"三个维度。共定义四种标准角色:

角色 权限范围 典型操作 适用场景
访客 仅查看公开报告与模板列表 浏览、搜索、查看报告摘要 跨团队观摩、审计查阅
压测工程师 模板 CRUD、执行个人任务、查看个人报告 创建/编辑模板、一键执行、停止任务 日常压测执行者
高级工程师 管理公共模板、审批模板发布、查看全量报告 模板版本发布、跨团队任务调度 压测负责人、技术骨干
系统管理员 用户管理、角色分配、系统配置、压力机管理 新增/禁用用户、修改角色、配置告警规则 平台运维、安全管控

3.4 权限模型核心规则

  • 模板隔离:每个模板绑定所属团队与可见范围(私有/团队/公开),压测工程师只能操作私有模板,高级工程师可管理团队模板。
  • 执行权限:一键执行按钮受"执行权限"控制,访客无执行入口;压测工程师执行时自动携带用户标识,调度层按用户资源配额分配压力机。
  • 审批流程:模板从"编辑中"到"已发布"需高级工程师审批,系统管理员可强制发布或下架。
  • 审计日志:所有模板变更、任务执行、权限修改均记录至审计表,支持按时间范围与操作人检索。
RBAC 权限模型关系图 用户 角色 权限 分配 关联 四种标准角色:访客 · 压测工程师 · 高级工程师 · 系统管理员 模板操作权限 任务执行权限 系统管理权限 权限校验流程: 1. 用户发起请求 → 2. 后端解析 JWT 获取用户 ID → 3. 查询用户-角色映射表 4. 获取角色-权限关联表 → 5. 校验当前操作是否在权限集合中 → 6. 通过/拒绝

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,审计日志存储在数据持久层独立表中,仅系统管理员可查询。

通过上述架构与权限模型的协同设计,自助容量压测作业平台在满足多团队、多角色协作需求的同时,保障了压测任务的安全隔离与资源可控性,为一键执行流程提供了坚实的底层支撑。