竞价与可抢占
为容忍中断的负载用 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% 按需容量,使容量紧回收全部竞价时服务仍活。
- ✓移竞价前让任务幂等——不能安全重跑的任务中断会致数据损坏而非仅延迟。