余额与账本
Superheat 是预付费的。你给组织的余额充值,运行中的实例把这份余额扣下去。月底没有账单,也没有后付费——余额空了,任何新东西都启动不了。
余额
每个组织一份余额,组织里的所有人共用。成员可以查看它并用它花钱;只有管理员能给它充值。参见 组织。
余额只有一种到账方式:Stripe 结账。选一个 $10、$25 或 $100 的套餐,或者输入 $5 到 $1,000 之间的自定义金额。付款一确认,余额就到账,通常在你结完账之后几秒钟。
余额大于零是两个操作的前提:部署新实例,以及启动一个已停止的实例。余额为零或以下时,两者都会被拒绝。停止和销毁则始终允许。
什么会把它扣下去
| 费用 | 何时累计 | 费率 |
|---|---|---|
| GPU | 实例处于 running 期间 | 报价中整块切片的小时价格,按秒计量 |
| 磁盘 | 实例处于 stopped 期间 | 报价中的存储费率,按你挂载的磁盘每 GB 每小时计 |
这就是全部。花在创建、启动、停止或销毁上的时间是免费的,出错的实例是免费的,已销毁的实例不再产生任何费用。
磁盘那一行是最容易把人绊倒的。已停止的实例仍然在一台物理机器上占着一块磁盘,在你销毁实例之前,这份预留你一直得付钱。停止与销毁 值得完整读一遍。
结算大约每分钟跑一次。每一次结算都按实例实际所处状态的费率,对上次结算以来累计的部分收费,所以一个长时间运行的实例产生的是一串稳定的小额条目,而不是最后一次性的一笔。
账本
每一笔资金变动都是一条只追加记录里的一行。什么都不会被修改或删除;更正就是再加一行。完整的表格在 计费 页面上,位于余额和花费图表下方。
| 列 | 它记的是什么 |
|---|---|
| 日期 | 这条记录写入的时间,精确到秒 |
| 类型 | 充值、GPU 用量、存储或调整 |
| 明细 | 这笔费用所属的实例,以及计费的秒数 |
| 金额 | 带符号:充值为正,扣费为负 |
| 余额 | 这条记录写入之后的即时余额 |
余额这一列是让这份记录可审计的关键。你在控制台任何地方看到的数字都是这些行的总和,所以如果某个数字看着不对,让它变得不对的那条记录就在这张表里。
扣费带着它来自哪个实例,每个实例的花费数字就是这么算出来的;明细 单元格可以跳到那个实例。充值不带实例。
实例自己的 计费 标签页是一份摘要,而不是账本的副本:到目前为止已结算的花费、运行时的每小时消耗速率,以及停止时的每小时消耗速率,并附有回到完整表格的链接。
用程序读取它
curl -s "$SUPERHEAT_API/v1/billing/transactions?limit=50" \
-H "Authorization: Bearer $SUPERHEAT_KEY"
这个接口用游标翻页,并接受一个 instance_id 过滤参数,用来拉取某一个实例的费用。limit 默认为 50,上限是 200。GET /v1/billing/spend-daily 只返回扣费,并按天汇总,这正是花费图表画的数据;它的 days 窗口默认为 30,上限是 90。
余额可以变成负数
结算是向后看的:它对已经用掉的时间收费。两次结算之间实例还在继续消耗,所以余额可能在任何机制作出反应之前就越过零。
这就是为什么有两道阈值而不是一道。到 $0 时,运行中的实例会被停止——你的数据还在。如果余额继续跌到 −$5,实例会被销毁,磁盘也跟着一起没了。
如果你是别人组织里的成员,你无法充值。请盯着余额,在它跌到 −$5 之前告诉管理员,因为在那之后谁也拿不回那块磁盘。