首页 / 知识库 / 系统架构体系 / 项目到底如何部署

14 - 冷启动、伸缩、计费:Serverless 的脾气

Serverless 很香,但它不是万能的。要用好它,得摸清它的”脾气”——尤其是冷启动伸缩计费这三件事。这一章帮你避坑,也让你知道什么场景不适合它。

脾气一:冷启动(第一次请求会慢)

回顾第 12 章:没请求时,Serverless 可能一个实例都不开(省钱)。那么当第一个请求来时,平台要临时启动一个实例——拉镜像、起容器、初始化你的应用。这个过程要花一点时间(几百毫秒到几秒),这就叫冷启动

  • 冷启动:实例从零启动,第一个请求要等它准备好,
  • 热启动:实例已经开着,后续请求直接处理,

类比:冷启动像便利店早上开门前要先开灯、上货、开机器;第一个顾客得等一下。等店开起来了,后面的顾客就顺畅了。

影响:偶尔的第一个请求会慢一点。对大多数应用可接受;但如果你的场景对”每一个请求都必须极快响应”很敏感,就要注意。

缓解办法

  • 把镜像做小一点(启动快)——参考 Docker 系列的镜像瘦身技巧
  • 开启平台的预留实例 / 预热(保持少量实例常驻,代价是这部分要一直付费)

脾气二:自动伸缩(省心,但要理解并发)

流量大,平台自动多开实例;流量小,自动缩回。这是优点,但要理解两点:

  • 无状态是前提:平台随时可能开新实例、关旧实例。所以你的后端不能把数据存在自己内存/本地磁盘里(存了,换个实例就丢了)。数据必须放外部(云数据库)。这就是第 18 章要讲的”无状态思维”。
  • 突发扩容也有上限:平台不是无限扩,通常有并发上限,可按需调整/申请。

脾气三:计费(省钱,但要看清计费项)

Serverless 按用量计费,通常按这几项:

  • 请求次数
  • 运行时长 × 内存规格(跑了多久、占了多少内存)
  • 可能还有流量费

优点很明显:没人访问几乎不花钱,非常适合起步项目。但也要注意:

  • 如果被恶意刷请求,费用会涨——记得配限流 / 用量告警
  • 高频、持续满负载的场景,按量算下来可能比包一台服务器还贵(见下面适用边界)

脾气四:执行时长限制(别拿它跑长任务)

很多 Serverless(尤其函数计算)对单次请求最长执行时间有限制(比如几十秒到几分钟)。所以:

  • 适合:快速返回的 API 请求
  • 不适合:一个请求里跑几十分钟的大任务(比如超长视频处理、大批量训练)

长任务的正确姿势:接口先快速返回”任务已提交”,把重活丢给异步任务/消息队列在后台慢慢做(参考消息队列入门)。

什么时候适合 / 不适合 Serverless

适合 ✅不太适合 ❌
中小项目、创业项目、AI 应用7×24 满负载的超大流量服务(可能更贵)
流量不稳定、有明显高峰低谷对每个请求延迟都极度敏感(受冷启动影响)
团队小、没专职运维单请求需要长时间运行(超过时长限制)
想省钱、想少操心需要在本机长期保存状态的场景

结论:对本教程面向的”前端 + 后端 + AI 中小项目”,Serverless 几乎是最优解。等你真长成超大规模、稳定高负载,再考虑换方案不迟。

小结

  • 冷启动:首个请求要临时启动实例,会慢一点;可用小镜像 / 预留实例缓解。
  • 自动伸缩:省心,但前提是后端无状态,数据要外置。
  • 计费:按量付费,低流量极省钱;但要防刷、配告警,超大流量可能反而贵。
  • 时长限制:别用它跑长任务,长任务交给异步队列。
  • 摸清脾气后,Serverless 对中小 / AI 项目是绝佳选择。

理论齐了,下一章我们动手把一个 FastAPI 打成 Docker、部署到 Serverless,把后端这条支线跑通。


下一章 → 15 - 实战:把 FastAPI 打成 Docker 部署到 Serverless