03 · AWS Lambda 概念地图:6 个核心概念与 6 个关键组件如何协作

发布时间:2026/10/15 13:25:25
03 · AWS Lambda 概念地图:6 个核心概念与 6 个关键组件如何协作 English version GitHub: https://github.com/geekchow/aws-lambda-guide你在这里第 3 阶段 / 共 6 阶段概念地图。读完本文你将知道Lambda 的 6 个核心概念按依赖顺序、6 个关键组件负责 / 掌握 / 不做以及它们如何在一张图上协作。暂不涉及内部细节——那是深入篇的内容。3.1 领域映射——从问题到概念按依赖顺序引入每个概念只依赖它上面的概念。#现实问题要素Lambda 概念一句话定义为何如此抽象1“一段由事件触发的业务逻辑”函数Function一个命名的代码 配置单元运行时、handler、内存、超时、环境变量、IAMIdentity and Access Management身份与访问管理角色。你部署和付费的单位——抽象中没有服务器。2“运行这段逻辑的服务器”执行环境Execution environment一个隔离的 Firecracker microVMmicro Virtual Machine微虚拟机装载函数的一份副本一次只服务一个请求跨请求复用最终被回收。用一次性、按请求规模的沙箱取代长期运行的服务器。3“此刻有多大负载”调用与并发Invocation concurrency调用是 handler 的一次执行并发是在途调用数 忙碌环境数 ≈ RPSRequests Per Second每秒请求数× 平均时长。把容量规划变成一个平台可度量、可限制的数字。4“一次发布”版本Version函数代码 配置的不可变、带编号的快照1、2……。$LATEST是唯一可变的草稿。Lambda 必须能随时重建相同的环境因此需要一个冻结的制品。5“生产环境正在用的那次发布”别名Alias一个可变的命名指针prod、staging指向一个版本或带流量权重指向两个版本。调用方绑定稳定名字部署和回滚变成指针切换。6“高峰前就已开好的服务器”预置并发PCLambda 为某个版本或别名提前初始化并保持就绪的执行环境数量。把冷启动移出延迟敏感代码的请求路径。派生概念由核心六概念构成在深入篇中定义冷启动Cold start 必须创建并初始化环境的那次调用概念 2 3。→ 05.6预留并发Reserved concurrency 从账号并发池中划给某函数的下限兼上限概念 3。→ 05.4限定符 / 限定 ARNAmazon Resource Name亚马逊资源名称function:checkout:7或function:checkout:prod概念 4 5。→ 05.1溢出Spillover 超出 PC 而以按需方式运行的调用概念 3 6。→ 05.3概念之间的关系拥有一个可变的publish-version冻结为指向 1 或 2 个可加权配置在预先创建作为镜像载入指定限定符占用 1 个环境 1 单位并发函数$LATEST版本 N不可变别名 prod预置并发执行环境调用图注请求如何抵达运行中的代码——调用 → 别名 → 版本 → 环境PC 负责预先创建环境。3.2 关键组件——从概念到组件其中两类是你管理的控制面对象版本、别名、PC 配置其余是服务每次调用的数据面服务。本表即第 5 阶段的目录。#关键组件负责Owns掌握Knows不做Does not do1版本存储PublishVersion把$LATEST冻结为不可变、带编号的快照代码哈希CodeSha256、每个版本的完整配置、单调递增的版本计数器绝不允许编辑已发布版本绝不复用编号不决定哪个版本接流量2别名路由每次请求把稳定名字解析为具体版本含加权掷骰别名 → 主版本 可选的第二版本及权重不存代码、不运行任何东西、不做健康检查由 CodeDeploy/告警负责3PC 管理器 Application Auto Scaling为某版本/别名保持N个已初始化环境就绪请求值与已分配 PC、状态IN_PROGRESS/READY/FAILED、利用率不限制流量超出部分溢出到按需自身不自动扩缩——那是 Application Auto Scaling 的事4调用前端 计数服务准入每个请求认证、授权、解析限定符、检查并发限额函数元数据缓存、函数/账号当前并发、预留并发不运行代码不选择具体环境5分配 放置服务为请求匹配一个空闲的热环境——或在工作节点上创建新环境每个环境的状态空闲/忙碌/初始化中与租约工作节点容量不决定限额计数服务已决定不执行代码6执行环境工作节点上的 Firecracker 微虚拟机运行一次 Init然后逐个运行 handler你的进程内存、/tmp、运行时、扩展不会同时处理两个请求不会在自身生命周期之外持久化任何东西架构分层——本图回答每个组件位于哪一面数据面: 每次调用控制面: 由你配置路由表制品 配置预建 N 个环境1 版本存储2 别名配置3 PC 管理器 自动扩缩4 调用前端 计数服务5 分配 放置6 工作节点上的执行环境3.3 协作总览本图回答一个同步请求如何端到端变成响应执行环境(微虚拟机)放置服务分配服务计数服务调用前端 别名解析调用方(API Gateway)执行环境(微虚拟机)放置服务分配服务计数服务调用前端 别名解析调用方(API Gateway)alt[有空闲热环境][无空闲 → 冷启动]Invoke checkout:prod1认证授权解析 prod → 版本2申请 1 单位并发3通过或 429 限流4需要 checkout:v8 环境5工作节点 W 上的 env-1236为 v8 创建环境7启动微虚拟机运行 Init8env-456 就绪9env-45610投递事件11handler 结果12释放并发单位13200 响应14图注正常路径——准入、解析、找到或创建环境、运行、释放。重要的非正常流程机制见深入篇限流Throttle——计数服务拒绝账号或预留并发耗尽或超过扩缩速率 →429 TooManyRequestsException。→ 05.4溢出冷启动——PC 池全部忙碌 → 经放置服务创建按需环境。→ 05.3、05.5金丝雀回滚——把问题版本的别名权重设回 0。→ 05.2结论六个概念——函数、环境、并发、版本、别名、PC——加上六个组件就是完整的地图。控制面组件决定运行什么版本、以什么名字别名、预热多少PC数据面组件决定请求能否运行计数、在哪里运行分配/放置并真正运行它环境。下一篇 →04 贯穿示例 ·返回00 总览 返回专栏目录