2. 核心概念:弹性伸缩、运营任务与编排

在构建标准化运营任务编排 API 之前,必须统一团队对三个核心概念的认知:弹性伸缩(资源维度)、运营任务(操作维度)和编排(流程维度)。三者共同构成了平台工程中“自动化运维”的语义基础。

2.1 弹性伸缩:水平 vs 垂直

弹性伸缩是平台应对负载变化的核心能力,分为两种基本模式:

维度 水平伸缩(Scale Out/In) 垂直伸缩(Scale Up/Down)
操作对象 实例数量(Pod / 虚拟机 / 容器) 单实例资源配置(CPU / 内存 / 磁盘)
典型场景 Web 服务应对突发流量 数据库或中间件性能升级
生效速度 秒级(新增实例启动) 分钟级(需重启实例)
资源粒度 整机/整容器 单机资源上限调整
API 语义 replicas: 5 → 10 resources.limits.cpu: 2 → 4
常见限制 需无状态设计、会话保持 受宿主机物理上限约束
平台工程要点:标准化 API 应同时暴露两种伸缩模式的参数,并在编排层通过策略决定使用哪种模式。例如:CPU 利用率 > 80% 时优先水平扩容,内存接近上限时触发垂直扩容。
弹性伸缩模式对比 水平伸缩(Scale Out/In) 实例 A 实例 B 实例 C 增加/减少实例数量 实例 D 实例 E 垂直伸缩(Scale Up/Down) 单实例 CPU: 2核 → 4核 内存: 4G → 8G 调整资源配置上限 需重启实例 受宿主机 物理上限约束

2.2 运营任务:部署、回滚与扩缩容

运营任务是平台对外暴露的最小可执行操作单元。在标准化 API 设计中,每个任务都应具备幂等性、可观测性和可中断性。以下是三类核心运营任务的定义:

  • 部署(Deploy):将指定版本的应用制品发布到目标环境。包含镜像拉取、配置注入、健康检查等子步骤。
  • 回滚(Rollback):将应用恢复到上一个已知的稳定版本。必须保留至少 N 个版本的发布历史。
  • 扩缩容(Scaling):调整目标服务的副本数或资源规格。支持水平(replicas)和垂直(resources)两种模式。
API 设计建议:将每个运营任务建模为 Task 资源,包含 type(deploy/rollback/scale)、params(版本号、副本数等)、status(pending/running/succeeded/failed)三个核心字段。

2.3 编排:工作流 vs 状态机

编排是将多个运营任务组合成自动化流程的机制。平台工程中主要采用两种编排模型:

特性 工作流(Workflow) 状态机(State Machine)
流程结构 有向无环图(DAG),任务按依赖顺序执行 有限状态集合,通过事件驱动状态迁移
适用场景 CI/CD 流水线、批量发布 故障恢复、滚动升级、金丝雀发布
状态管理 隐式,由 DAG 执行引擎维护 显式,每个状态对应一组允许的操作
错误处理 重试、跳过、终止整个工作流 定义错误状态及转移规则
API 示例 POST /workflows 提交 DAG 定义 POST /statemachines/{id}/transition
常见误区:不要将工作流和状态机对立。实际平台中,一个运营任务编排往往同时使用两者——工作流定义任务执行顺序,状态机管理单个任务的内部生命周期。
编排模型对比:工作流 vs 状态机 工作流(DAG) 部署 v2.1.0 健康检查 流量切换 完成 / 失败 任务按依赖关系并行/串行执行 状态机 Pending 提交 Running 成功 失败 Succeeded Failed 事件驱动状态迁移,状态可枚举

2.4 三者的关系与标准化 API 映射

弹性伸缩、运营任务和编排在平台工程中并非孤立概念,而是层层递进的关系:

  1. 弹性伸缩定义了“做什么”(资源调整的语义);
  2. 运营任务定义了“怎么做”(具体的操作单元);
  3. 编排定义了“何时做、按什么顺序做”(流程与状态管理)。

标准化 API 的设计目标,就是将这三层语义统一到一套资源模型中:

// 运营任务编排 API 核心资源模型(简化示例)
{
  "apiVersion": "platform.io/v1",
  "kind": "OperationPipeline",
  "spec": {
    "tasks": [
      {
        "name": "scale-out-web",
        "type": "Scale",
        "params": {
          "mode": "horizontal",
          "targetReplicas": 10
        }
      },
      {
        "name": "health-check",
        "type": "Deploy",
        "params": {
          "action": "check",
          "timeoutSeconds": 120
        }
      }
    ],
    "workflow": {
      "edges": [
        {"from": "scale-out-web", "to": "health-check"}
      ]
    },
    "stateMachine": {
      "initial": "pending",
      "states": {
        "pending": {"on": "start", "to": "running"},
        "running": {"on": "success", "to": "succeeded"},
        "running": {"on": "failure", "to": "failed"}
      }
    }
  }
}
课程关键结论:标准化 API 的核心价值在于将弹性伸缩、运营任务和编排三者解耦后重新组合。平台使用者只需声明“我要什么”(伸缩目标),而不必关心“如何实现”(底层编排细节)。