Skip to content
返回架构决策

竞价与可抢占

为容忍中断的负载用 60-90% 折扣的闲余容量。

为什么

云厂商以 60-90% 折扣卖闲余容量,可 2 分钟通知回收。对能 checkpoint 重启的批处理、CI runner、无状态 web 层,这是白捡钱——100 台 CI 集群从 3 万/月降到 6 千/月。坑是中断:容量紧时竞价实例被回收,所以不适合有状态或延迟敏感的。纪律是识别哪些负载容中断并移到竞价,只把不能杀的留按需/预留。

何时使用

对任何批处理、CI 或无状态负载。1-2 小时迁移。数据库、有在途消息的队列或面向用户延迟关键路径可跳过。

如何做

1. 列负载;标每个为容中断或敏感
2. 对容中断的(CI、批处理、无状态 web、带 checkpoint 的 ML 训练):
   a. 把自动伸缩组改成 90% 竞价 + 10% 按需(兜底)
   b. 加优雅关停处理器,2 分钟警告时 checkpoint
   c. 设竞价中断指标;率 > 5%/小时告警(容量紧)
3. 敏感的留按需/预留——不要追折扣
4. 追节省:(按需成本 − 竞价成本)× 小时,月报
5. 有兜底计划:竞价不可用时自动伸缩按需

示例

CI runner 集群:50 实例,24/7,xlarge($0.19/时)

按需:     50 × $0.19 × 730 = $6,935/月
竞价(70%):35 × $0.057 × 730 = $1,456/月(竞价价低 70%)
按需兜底(30%):15 × $0.19 × 730 = $2,079/月
合计:$3,535/月——省 49%,4 万/年

中断处理:CI 任务幂等 + 回收时重排队。
平均中断:2%/天 → 重跑成本可忽略。

常见问题

  • ⚠为省钱把有状态负载移竞价——写到一半被回收丢数据;竞价仅限无状态。

最佳实践

  • ✓竞价集群里永远留 10-20% 按需容量,使容量紧回收全部竞价时服务仍活。
  • ✓移竞价前让任务幂等——不能安全重跑的任务中断会致数据损坏而非仅延迟。

相关资源