按需运行:没人用,就不花钱

第 5 课 · 共 7 课 约 7 分钟

三个自检问题、应用的资源上限,以及常驻这个例外怎么管。

本课目标

读完这一课,你将能够

  • 用三个问题检查一个功能是不是在「没人用时也花钱」
  • 说出 AIDC 应用的资源上限,以及用完会怎样
  • 说出「常驻」什么时候是允许的,要写明哪三件事

三个问题

云上的账单,多半不是花在有人用的时候,而是花在没人用的时候:一个一直开着的进程,一条一直挂着的连接,一个永远在转的定时器。设计任何新东西,先问自己三句:

Q1

没人用时,它还在跑吗?

SDK 的实时连接在页面隐藏 1 分钟后自动断开,切回来再续上,不丢不重。

Q2

它是不是一直挂着连接?

不要用 setInterval 轮询服务端,部署时会告警;数据一变才推送。

Q3

它会随页面数、设备数线性增长吗?

一个数据源一条数据流,多个应用订阅;不是每个看板各装一个发布端。

三个问题里任何一个的答案是「是」,就改成按需,或者写明为什么必须这样。

上限是安全带

先算账,再开。按量计费的东西——函数时长、流量、模型 token、实时转写、外部 API——上线前先估一下「次数乘单价」,再决定要不要开、开多大。

AIDC 给每个应用一组缺省上限,清单里不写就用缺省值:

2,000计算分钟 / 月:实时连接、工作流运行、模型调用的时长
20通知邮件 / 天
100 万模型 token / 天

计算分钟用完,应用的请求返回 429 quota_exhausted,数据变化和定时也不再开跑,下月恢复;其他上限各管一样:每日 token 用完,模型调用返回 429,明天恢复;超过每日数量的通知不再发出。把上限调高,等于允许它花更多的钱,部署时会告警。随时可以看用量——本月的计算分钟、各项上限、定时的下一次和今天的通知:

aidc app usage <slug>

把上限当成安全带:一个写错的条件,一个漏掉的冷却,会先在用量上报警,而不是拖到月底才在账单上发现。

常驻是有主的例外

有些东西必须一直开着,比如装在数据源旁边的发布端。这是允许的,但它是例外,例外要有主人。要写清三件事:

  1. 归谁

    负责人是谁,出了问题找谁。

  2. 为什么

    为什么不能按需。比如数据源没有变化信号,只能常驻一个探针。

  3. 怎么关

    不需要时怎样停掉、吊销 Key、清掉数据。

「开完就关」是同一个道理:临时开的服务、后台进程、测试用的 Key、测试数据、定时任务,用完就关掉、吊销、删除。

算一笔闲时的账

一直开着按需
看板每隔几分钟整页刷新一次有人打开时读一次,有变化才推
服务保活每分钟起一个任务去看服务还活着吗让服务自己重启,不用定时去看
提醒每 5 分钟查一遍有没有事有事才触发,冷却期内只提醒一次
没人用时的费用全天都在花只剩必须常驻的那一小部分

再算一笔对比:同样是「每天要有结果」,每 5 分钟查一遍是每月 8,640 次,每天汇总一次是每月 30 次,差了 288 倍。而这两种做法,页面上看到的常常是同一份数据。

要点

  • 账单多半花在没人用的时候:常驻的进程、挂着的连接、永远在转的定时器。
  • 三个自检问题:没人用时还在跑吗?一直挂着连接吗?会随页面数线性增长吗?
  • 每个应用缺省每月 2,000 计算分钟、每天 20 封通知;计算分钟用完返回 429,下月恢复;超出的通知不发。
  • 常驻是有主的例外,要写明归谁、为什么、怎么关。

练一练

写一份闲时账本

在一个安静的下午,看看没人用的时候你的系统还在做什么。

列出没人用时仍在运行的东西:进程、定时任务、长连接,并写上各自的负责人。

小测

选一个答案,马上看解析。

Q1页面被切到后台超过 1 分钟,SDK 的实时连接会怎样?

Q2一个应用本月的计算分钟用完了,会怎样?

Q3什么时候可以让一个进程常驻?

延伸阅读