3. 平台架构总览:分层架构设计

弹性伸缩运营任务编排平台采用四层分层架构,将接入、编排、执行与数据存储职责解耦。每一层只依赖下层提供的稳定接口,上层无需关心下层实现细节,从而支持独立迭代与水平扩展。下图展示了平台的整体分层与核心组件关系。

弹性伸缩运营任务编排平台 — 分层架构总览 接入层 REST API WebSocket CLI / SDK 事件钩子 管理后台 认证鉴权 · 限流熔断 · 请求校验 · 协议转换 编排层 工作流引擎 DAG 解析 · 状态机 调度器 定时 · 触发 · 重试 策略决策 弹性规则 · 评分 任务队列 优先级 · 分片 执行层 执行器集群 容器 · 函数 · 裸机 云 Provider 适配器 AWS · Azure · 阿里云 · 私有云 监控与反馈 指标采集 · 健康检查 数据层 关系数据库 缓存 消息队列 时序数据库 对象存储 持久化 · 状态存储 · 事件溯源 · 审计日志 请求流:用户/系统 → 接入层 → 编排层 → 执行层 → 数据层;反馈流反向传递状态与结果

3.1 接入层:统一入口与协议适配

接入层是平台对外的统一边界,负责接收来自不同客户端和外部系统的请求,完成认证鉴权、限流熔断、请求校验与协议转换后,将标准化指令下发至编排层。

组件 职责 典型技术
REST API 提供 CRUD 接口管理任务、策略、资源 OpenAPI 3.0 / Swagger
WebSocket 实时推送任务状态、日志与告警 Socket.IO / STOMP
CLI / SDK 开发者本地调试与自动化集成 gRPC / HTTP Client
事件钩子 对接 CI/CD、监控系统触发弹性伸缩 Webhook / CloudEvents
管理后台 可视化操作、大盘监控、人工干预 React / Vue + BFF
设计要点:接入层不包含任何业务逻辑,仅做协议适配与前置过滤。所有业务决策下沉到编排层,保证接入层可快速替换或升级。

3.2 编排层:核心大脑与决策中枢

编排层是平台最复杂的层次,负责工作流解析、任务调度、策略决策与队列管理。它接收接入层传递的标准化指令,结合数据层提供的状态信息,生成可执行的弹性伸缩任务序列。

  • 工作流引擎:将用户定义的弹性策略解析为 DAG(有向无环图),每个节点代表一个原子操作(如扩容、缩容、健康检查),引擎按依赖关系驱动执行。
  • 调度器:支持定时触发、事件触发、手动触发三种模式,内置重试机制与死信处理,确保任务不丢失。
  • 策略决策:基于实时指标(CPU、内存、QPS、队列深度)与历史数据,通过评分算法选出最优伸缩方案。
  • 任务队列:按优先级与资源分片对任务进行排队,防止执行层过载,支持背压控制。
关键指标:编排层单节点吞吐量应 ≥ 5000 TPS,任务调度延迟 ≤ 50ms,策略决策耗时 ≤ 200ms。

3.3 执行层:弹性动作的实际落地

执行层负责将编排层下发的任务指令转化为真实的云资源操作。它通过执行器集群与云 Provider 适配器屏蔽不同基础设施的差异,同时采集执行过程中的监控数据反馈给上层。

组件 职责 支持环境
执行器集群 运行任务脚本、调用 API、管理资源生命周期 Kubernetes Pod / 容器 / 裸机
云 Provider 适配器 封装各云厂商 API 差异,提供统一接口 AWS / Azure / 阿里云 / 私有云
监控与反馈 实时采集执行状态、资源利用率、错误日志 Prometheus / CloudWatch / 自定义 Agent
避坑指南:执行层必须实现幂等性设计,防止因网络抖动或重试导致资源重复创建。建议每个执行操作携带全局唯一 ID,并在 Provider 适配器层做去重校验。

3.4 数据层:持久化与状态管理

数据层为整个平台提供持久化存储、缓存加速、消息通信与审计追溯能力。各组件按职责选择最合适的存储引擎,避免单点瓶颈。

  • 关系数据库:存储任务定义、策略配置、用户信息、执行记录等结构化数据。
  • 缓存:缓存热点策略、资源配额、限流计数器,降低数据库压力。
  • 消息队列:解耦编排层与执行层,实现异步任务分发与事件通知。
  • 时序数据库:存储监控指标、弹性伸缩历史、资源利用率趋势。
  • 对象存储:保存任务日志、审计快照、大文件附件。

3.5 核心交互流程

一次完整的弹性伸缩任务从触发到完成,经历以下标准流程:

  1. 触发:接入层收到来自定时器、监控告警或人工操作的伸缩请求。
  2. 校验与转换:接入层完成认证、限流、参数校验,将请求转为内部事件。
  3. 策略匹配:编排层根据事件类型查询数据层中的策略配置,加载对应弹性规则。
  4. 决策与编排:策略决策模块计算目标实例数,工作流引擎生成执行 DAG。
  5. 任务分发:调度器将 DAG 节点拆分为独立任务,放入任务队列。
  6. 执行与反馈:执行器从队列拉取任务,调用云 Provider 完成资源操作,实时上报状态。
  7. 状态持久化:数据层记录执行结果、指标变化与审计日志。
  8. 闭环调整:编排层根据执行结果判断是否需要回滚或触发后续补偿任务。
核心交互流程(请求流与反馈流) ① 触发 ② 校验转换 ③ 策略匹配 ④ 决策编排 ⑤ 任务分发 ⑥ 执行反馈 ⑦ 状态持久化 ⑧ 闭环调整 实线箭头 = 请求流(触发 → 校验 → 匹配 → 决策 → 分发 → 执行 → 持久化 → 闭环) 虚线箭头 = 反馈流(执行结果、状态变更、异常信息回传至编排层与接入层) 数据层在步骤③、⑦、⑧中被读取或写入,为全流程提供持久化支撑
工程实践:建议在编排层与执行层之间引入消息队列(如 Kafka / RabbitMQ),实现异步解耦与削峰填谷。当执行层出现大面积故障时,任务在队列中积压而非丢失,恢复后可自动重放。