您的工作负载具有突发性——例如内容上传时激增的视频编码作业,需要 8 个 GPU 运行 4 小时后即停止的 ML 训练任务,由业务事件触发的批量推理作业,或者在夜间运行的渲染流水线。您可能要么过度配置(80% 的时间都在为闲置资源付费),要么配置不足(高峰期作业排队数小时)。您需要一种架构,能够在您需要时精确地调配所需的计算资源,并在作业完成后释放它们——且没有“缩减到零”对 GPU 工作负载不切实际的冷启动惩罚。
按需开关扩展架构通过热/冷池、作业队列驱动的资源调配和自动化释放来管理计算资源。热池维护少量预初始化实例,可立即使用。当需求超出热池时,冷池从 Spot/可抢占实例调配额外容量。作业编排器将工作路由到可用实例,监控进度,处理 Spot 实例回收时的重试,并在队列清空时触发缩减。此模式对于 GPU 工作负载尤其关键,因为冷启动(容器拉取 + 模型加载)可能需要 3-10 分钟。
Explore more design patterns and system architectures
MicrocosmWorks 拥有批处理密集型或周期性工作负载的客户,在实施启停式扩展后,通常能看到 60-80% 的云成本降低,因为计算资源仅在活跃处理时段运行,而不是 24/7 全天候运行。我们根据实际使用遥测数据设计扩展策略——例如,一个每天运行 4 小时的数据处理管道只需支付这 4 小时的费用,而不是全部 24 小时。我们的架构师在发现阶段分析您的工作负载模式,以便在任何实施开始之前预测确切的节省。
冷启动时间各不相同,对于预热节点池上的容器化应用程序,冷启动时间为 2-3 秒;对于需要专用 GPU 实例或大型模型加载的工作负载,冷启动时间为 5-10 分钟。MicrocosmWorks 采用多种技术来最小化这种延迟。我们实施预测性扩展,利用历史流量模式和计划事件在预期需求到来之前启动资源,并为对延迟敏感的工作负载使用容器镜像预拉取和热池预留。对于无法容忍任何冷启动的应用程序,我们保持一个最小的热基线,在需求到来时积极扩展。
MicrocosmWorks 实施响应式自动扩展,采用由队列深度、CPU 利用率或自定义应用程序指标触发的激进扩展策略,并结合包含冷却期以避免抖动的更渐进式收缩策略。我们在扩展事件期间配置了过度预配缓冲区,以便系统能够预期持续增长,而不是一次只追逐一个实例的需求。对于真正不可预测的峰值,例如闪购或病毒式事件,我们利用来自您的营销或运营日历的事件驱动触发器预配容量。
MicrocosmWorks 将启停式扩展应用于数据库,使用无服务器数据库产品,如 Aurora Serverless、Neon 或 PlanetScale,这些产品在空闲时段将计算资源扩展到零,同时保持存储持久且即时可用。对于无法使用无服务器数据库的有状态工作负载,我们实施读副本扩展,根据查询负载添加和移除副本,同时保持一个最小的主实例始终运行。这种混合方法为客户带来了数据层扩展的成本效益,而无需在关机和重启周期中管理数据库状态的复杂性。
MicrocosmWorks 部署全面的扩展可观察性,使用 Grafana 或 Datadog 仪表盘实时跟踪实例数量、扩展事件延迟、失败的扩展尝试以及期望容量与实际容量之间的差距。我们为扩展失败、持续高利用率(表明扩展上限过低)以及表明失控扩展的成本异常配置多渠道警报。我们的操作手册包括针对常见故障模式的自动化补救措施,例如达到云提供商实例限制或在特定可用区遇到容量不足错误。
该系统以作业队列(SQS、Redis 或自定义)为核心,用于缓冲传入的工作请求。扩展控制器监控队列深度,并首先从热池调配实例,然后从冷池(Spot 实例)调配。每个工作实例从队列中拉取作业,执行工作负载(编码、训练、推理),报告完成情况,然后返回池中或终止。检查点管理器通过将中间状态保存到 S3 来处理 Spot 实例回收,使作业能够在不同实例上恢复而无需从头开始。
核心组件:| 层 | 技术 |
|---|---|
| 计算 | AWS EC2 Spot (G5/P4), GCP Preemptible (A2/L4), RunPod Serverless, Modal |
| 编排 | Kubernetes (Karpenter 用于自动扩缩), AWS Batch, 自定义作业编排器 |
| 作业队列 | AWS SQS, BullMQ (Redis), Temporal, Celery |
| 存储 | S3(检查点、模型工件), NVMe(模型缓存), EFS(共享工作区) |
| 监控 | CloudWatch/Prometheus(队列深度、实例利用率、作业延迟), 自定义成本仪表板 |
| 何时使用 | 何时避免 |
|---|---|
| 工作负载具有突发性 — 峰值需求是平均需求的 5 倍以上 | 流量稳定且可预测 — 大小合适的预留实例更便宜 |
| 闲置时昂贵的 GPU/高计算作业 | 工作负载是适合无服务器(Lambda)的轻量级 CPU 处理 |
| 作业可以容忍冷池调配的 1-5 分钟冷启动时间 | 需要亚秒级的作业启动延迟 — 您需要始终在线的基础设施 |
| 成本优化是主要关注点,且 Spot 实例定价可节省 60-90% | Spot 实例中断会导致检查点无法缓解的数据丢失 |
MW 以“每作业成本”的视角设计按需开关扩展——我们根据不同的扩展策略模拟处理一个工作单元(一个视频、一次训练运行、一次批量推理)的总成本,并选择在所需延迟 SLA 下将成本降至最低的策略。我们的实施方案包括实时成本仪表板,显示每个作业的成本、基础设施利用率和 Spot 实例节省。我们构建了按需开关的 GPU 基础设施,与预留实例相比,视频处理成本降低了 70%,并构建了 ML 训练集群,可在 4 小时训练运行期间调配 64 个 GPU,并自动释放它们。
安全不是发布后才添加的功能。它是一种架构属性——系统要么为此而设计,要么就不是。