您的工作负载具有突发性——例如,内容上传时激增的视频编码作业,需要 8 个 GPU 运行 4 小时然后就闲置的 ML 训练任务,由业务事件触发的批量推理作业,或通宵运行的渲染管道。您可能会过度配置(80% 的时间都在为闲置资源付费),或者配置不足(高峰期作业排队数小时)。您需要一种架构,能够在您需要时精确地提供所需计算资源,并在作业完成后释放它们——同时避免“冷启动”延迟,这种延迟使得“缩放到零”对于 GPU 工作负载而言不切实际。
按需启停扩展架构通过热/冷池、作业队列驱动的资源调配以及自动化释放来管理计算资源。热池维护少量预初始化实例,可立即使用。当需求超出热池容量时,冷池从 Spot/Preemptible 实例调配额外容量。作业编排器将工作路由到可用实例,监控进度,处理 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 utilization 或自定义应用程序指标触发,并结合了包含冷却期、更渐进的缩容策略,以避免系统频繁伸缩。我们在扩容事件期间配置超额预置缓冲区,以便系统能够预期持续增长,而不是逐个实例地追赶需求。对于像限时抢购或病毒式传播事件这样真正不可预测的峰值,我们使用来自您的市场营销或运营日历的事件驱动触发器来预置容量。
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 for autoscaling), 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 并自动释放它们。
安全不是发布后才添加的功能。它是一种架构属性——系统要么为此而设计,要么就不是。