CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
无服务器入门/课时/冷启动与性能
RawBlame
课时目录12 节

无服务器入门

  1. 01无服务器是什么
  2. 02十二要素应用
  3. 03FaaS 执行模型
  4. 04AWS Lambda 入门
  5. 05事件驱动架构
  6. 06API Gateway
  7. 07冷启动与性能
  8. 08无状态与外部存储
  9. 09数据库迁移
  10. 10本地开发与部署
  11. 11成本与限制
  12. 12综合练习

冷启动与性能

包体积、Provisioned Concurrency。

30 分钟

冷启动与性能

用户第一次(或平台新建实例时)调用 Lambda,要经历 下载部署包、JVM 启动、类加载、Spring 初始化——这段 冷启动 延迟可能从几百毫秒到数秒。理解成因与缓解手段,才能判断 Serverless 是否满足你的 SLA。

学习目标

  • 区分冷启动、warm 调用与 Provisioned Concurrency
  • 列出 Java 运行时特有的启动成本
  • 掌握包体积、初始化逻辑、SnapStart 等优化方向

冷启动从哪来

调度新实例
  → 下载/解压部署包(体积越大越慢)
  → 启动运行时(JVM 尤其明显)
  → 执行 static 块 / @PostConstruct / Spring Context
  → 才进入 handleRequest

Warm 调用 复用已初始化进程:仅执行业务代码。流量间歇性时,大量请求仍可能撞上冷启动。

优化策略

手段效果代价
减小包体积少传少解压拆依赖、避免 fat jar 塞满
精简初始化少做启动时 IO懒加载 DB 连接
提高 memory更多 CPU,有时更快GB-秒单价上升
Provisioned Concurrency预热 N 个实例持续计费,即使无请求
SnapStart(Java)快照恢复 JVM区域/运行时限制需查文档
// 反模式:Handler 类 static { 加载整个 Spring Boot }
// 较优:轻量 Handler + 必要 Bean;或 AWS SDK 直连,不用全套 Spring

与 scale-cache 不同:Provisioned Concurrency 是 预置计算实例,不是 Redis 缓存——买的是 已热好的 Lambda 容器。

何时接受冷启动

  • 后台异步任务、定时报表:秒级延迟可接受
  • 面向用户的同步 API:需压测 P99;若 P99 > 产品要求,考虑 Provisioned 或回 EC2

aws-lambda 在 AWS track 里也会提冷启动;本课强调 Java/Spring 栈的体感。

练习

  • 用 CloudWatch Logs 找 REPORT 行中的 Init Duration 与 Duration
  • 估算:去掉 unused dependency 对 50MB jar 的部署收益
  • 写场景判断:Webhook 回调 vs 支付确认页 API,哪个更怕冷启动?

小结

冷启动是 FaaS 的物理定律;优化靠瘦包、懒初始化、预热或换架构。 下一课讲无状态函数如何把状态交给外部存储。

加载本节练习…
← 上一课API Gateway下一课 →无状态与外部存储