竞价实例是什么
竞价实例(抢占式实例)共用云厂商的闲置容量,价格随供需浮动,通常明显低于同规格按量实例,代价是资源可能被系统回收。它把“稳定性”换成了“价格”:只要任务能中断、能重试、能转移,就适合放在竞价实例上跑。
基本信息
| 定价方式 | 价格随供需浮动;可设置出价上限,也可选跟随市场价 |
|---|---|
| 回收机制 | 系统在回收前给出短时通知,随后停止实例;不同平台通知方式不同 |
| 生命周期 | 实例可能在任意时刻被回收,不适合承载不可中断的负载 |
| 计费方式 | 按实际运行时长计费,价格低于按量实例 |
| 常见配套 | 与弹性伸缩、队列系统、任务重试机制配合使用效果最好 |
| 回收后状态 | 实例进入停止或被释放状态,数据盘是否保留取决于平台规则 |
创建竞价实例
创建竞价实例
aliyun ecs RunInstances --RegionId cn-hangzhou --InstanceType ecs.c6.large --ImageId <image-id> --InstanceChargeType PostPaid --SpotStrategy SpotAsPriceGo # 跟随市场价
aliyun ecs RunInstances --RegionId cn-hangzhou --InstanceType ecs.c6.large --ImageId <image-id> --InstanceChargeType PostPaid --SpotStrategy SpotWithPriceLimit --SpotPriceLimit 0.5 # 设出价上限
tccli cvm RunInstances --InstanceChargeType SPOTPAID --Placement Zone=ap-guangzhou-3 --InstanceType S5.MEDIUM4
aliyun ecs DescribeInstances --RegionId cn-hangzhou --InstanceChargeType PostPaid # 核对竞价实例清单典型使用场景
- 批量计算与数据处理:任务可分片、可重试,回收只影响进度不影响结果
- 视频转码与渲染:单任务粒度小,中断后从队列里重新领取即可
- CI 构建机:构建任务天然无状态,回收后重跑成本可控
- 无状态 Web 层的弹性部分:与包年基线实例混合部署,被回收时由其他实例承接流量
- 压测与演练:短期需要大量算力,用竞价实例压低成本
可中断性与选型判断
| 负载特征 | 是否适合竞价 | 原因 |
|---|---|---|
| 任务可重试、状态在外部存储 | 适合 | 回收只损失当次进度,重启即可继续 |
| 长时间单点计算无检查点 | 不适合 | 中断后全部重头再来,成本反而更高 |
| 数据库与有状态中间件 | 不适合 | 回收可能造成数据不一致与服务中断 |
| 固定流量入口 | 有条件适合 | 需与稳定实例混合,并保证入口不依赖单台竞价实例 |
程序需要监听回收通知并做优雅退出与任务转移:收到通知后把进度落盘、把任务交还队列,再由其他实例接手。依赖“跑完再退出”的写法,在回收时会直接丢掉全部进度。
不要按固定折扣预期价格:供需变化时价格会上浮,成本预估随之失效。把竞价单价纳入监控,并设定出价上限,避免在价格高位继续无感运行。