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、内存、超时、环境变量、IAM(Identity and Access Management,身份与访问管理)角色)。 你部署和付费的单位------抽象中没有服务器。
2 "运行这段逻辑的服务器" 执行环境(Execution environment) 一个隔离的 Firecracker microVM(micro Virtual Machine,微虚拟机),装载函数的一份副本,一次只服务一个请求,跨请求复用,最终被回收。 用一次性、按请求规模的沙箱取代长期运行的服务器。
3 "此刻有多大负载" 调用与并发(Invocation & concurrency) 调用 是 handler 的一次执行;并发是在途调用数 = 忙碌环境数 ≈ RPS(Requests Per Second,每秒请求数)× 平均时长。 把容量规划变成一个平台可度量、可限制的数字。
4 "一次发布" 版本(Version) 函数代码 + 配置的不可变 、带编号的快照(1、2......)。$LATEST 是唯一可变的草稿。 Lambda 必须能随时重建相同的环境,因此需要一个冻结的制品。
5 "生产环境正在用的那次发布" 别名(Alias) 一个可变的命名指针 (prod、staging),指向一个版本,或带流量权重指向两个版本。 调用方绑定稳定名字;部署和回滚变成指针切换。
6 "高峰前就已开好的服务器" 预置并发(PC) Lambda 为某个版本或别名提前初始化并保持就绪的执行环境数量。 把冷启动移出延迟敏感代码的请求路径。

派生概念(由核心六概念构成,在深入篇中定义):

  • 冷启动(Cold start) = 必须创建并初始化环境的那次调用(概念 2 + 3)。→ 05.6
  • 预留并发(Reserved concurrency) = 从账号并发池中划给某函数的下限兼 上限(概念 3)。→ 05.4
  • 限定符 / 限定 ARN(Amazon Resource Name,亚马逊资源名称) = function:checkout:7 或 function:checkout:prod(概念 4 + 5)。→ 05.1
  • 溢出(Spillover) = 超出 PC 而以按需方式运行的调用(概念 3 + 6)。→ 05.3

概念之间的关系:
#mermaid-svg-5B0urDc97F9wMo23{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5B0urDc97F9wMo23 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5B0urDc97F9wMo23 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5B0urDc97F9wMo23 .error-icon{fill:#552222;}#mermaid-svg-5B0urDc97F9wMo23 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5B0urDc97F9wMo23 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5B0urDc97F9wMo23 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5B0urDc97F9wMo23 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5B0urDc97F9wMo23 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5B0urDc97F9wMo23 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5B0urDc97F9wMo23 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5B0urDc97F9wMo23 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5B0urDc97F9wMo23 .marker.cross{stroke:#333333;}#mermaid-svg-5B0urDc97F9wMo23 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5B0urDc97F9wMo23 p{margin:0;}#mermaid-svg-5B0urDc97F9wMo23 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5B0urDc97F9wMo23 .cluster-label text{fill:#333;}#mermaid-svg-5B0urDc97F9wMo23 .cluster-label span{color:#333;}#mermaid-svg-5B0urDc97F9wMo23 .cluster-label span p{background-color:transparent;}#mermaid-svg-5B0urDc97F9wMo23 .label text,#mermaid-svg-5B0urDc97F9wMo23 span{fill:#333;color:#333;}#mermaid-svg-5B0urDc97F9wMo23 .node rect,#mermaid-svg-5B0urDc97F9wMo23 .node circle,#mermaid-svg-5B0urDc97F9wMo23 .node ellipse,#mermaid-svg-5B0urDc97F9wMo23 .node polygon,#mermaid-svg-5B0urDc97F9wMo23 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5B0urDc97F9wMo23 .rough-node .label text,#mermaid-svg-5B0urDc97F9wMo23 .node .label text,#mermaid-svg-5B0urDc97F9wMo23 .image-shape .label,#mermaid-svg-5B0urDc97F9wMo23 .icon-shape .label{text-anchor:middle;}#mermaid-svg-5B0urDc97F9wMo23 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5B0urDc97F9wMo23 .rough-node .label,#mermaid-svg-5B0urDc97F9wMo23 .node .label,#mermaid-svg-5B0urDc97F9wMo23 .image-shape .label,#mermaid-svg-5B0urDc97F9wMo23 .icon-shape .label{text-align:center;}#mermaid-svg-5B0urDc97F9wMo23 .node.clickable{cursor:pointer;}#mermaid-svg-5B0urDc97F9wMo23 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5B0urDc97F9wMo23 .arrowheadPath{fill:#333333;}#mermaid-svg-5B0urDc97F9wMo23 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5B0urDc97F9wMo23 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5B0urDc97F9wMo23 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5B0urDc97F9wMo23 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5B0urDc97F9wMo23 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5B0urDc97F9wMo23 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5B0urDc97F9wMo23 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5B0urDc97F9wMo23 .cluster text{fill:#333;}#mermaid-svg-5B0urDc97F9wMo23 .cluster span{color:#333;}#mermaid-svg-5B0urDc97F9wMo23 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5B0urDc97F9wMo23 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5B0urDc97F9wMo23 rect.text{fill:none;stroke-width:0;}#mermaid-svg-5B0urDc97F9wMo23 .icon-shape,#mermaid-svg-5B0urDc97F9wMo23 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5B0urDc97F9wMo23 .icon-shape p,#mermaid-svg-5B0urDc97F9wMo23 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5B0urDc97F9wMo23 .icon-shape .label rect,#mermaid-svg-5B0urDc97F9wMo23 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5B0urDc97F9wMo23 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5B0urDc97F9wMo23 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5B0urDc97F9wMo23 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 拥有一个可变的
publish-version

冻结为
指向 1 或 2 个

可加权
配置在
预先创建
作为镜像

载入
指定限定符
占用 1 个环境

= 1 单位并发
函数
$LATEST
版本 N

不可变
别名 prod
预置并发
执行环境
调用

图注:请求如何抵达运行中的代码------调用 → 别名 → 版本 → 环境,PC 负责预先创建环境。

3.2 关键组件------从概念到组件

其中两类是你管理的控制面 对象(版本、别名、PC 配置);其余是服务每次调用的数据面服务。本表即第 5 阶段的目录。

# 关键组件 负责(Owns) 掌握(Knows) 不做(Does not do)
1 版本存储 (PublishVersion) 把 $LATEST 冻结为不可变、带编号的快照 代码哈希(CodeSha256)、每个版本的完整配置、单调递增的版本计数器 绝不允许编辑已发布版本;绝不复用编号;不决定哪个版本接流量
2 别名路由 每次请求把稳定名字解析为具体版本(含加权掷骰) 别名 → 主版本 + 可选的第二版本及权重 不存代码、不运行任何东西、不做健康检查(由 CodeDeploy/告警负责)
3 PC 管理器(+ Application Auto Scaling) 为某版本/别名保持 N 个已初始化环境就绪 请求值与已分配 PC、状态(IN_PROGRESS/READY/FAILED)、利用率 不限制流量(超出部分溢出到按需);自身不自动扩缩------那是 Application Auto Scaling 的事
4 调用前端 + 计数服务 准入每个请求:认证、授权、解析限定符、检查并发限额 函数元数据缓存、函数/账号当前并发、预留并发 不运行代码;不选择具体环境
5 分配 + 放置服务 为请求匹配一个空闲的热环境------或在工作节点上创建新环境 每个环境的状态(空闲/忙碌/初始化中)与租约;工作节点容量 不决定限额(计数服务已决定);不执行代码
6 执行环境(工作节点上的 Firecracker 微虚拟机) 运行一次 Init,然后逐个运行 handler 你的进程内存、/tmp、运行时、扩展 不会同时处理两个请求;不会在自身生命周期之外持久化任何东西

架构分层------本图回答:每个组件位于哪一面?
#mermaid-svg-7oRzjs28wvWm1BXB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7oRzjs28wvWm1BXB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7oRzjs28wvWm1BXB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7oRzjs28wvWm1BXB .error-icon{fill:#552222;}#mermaid-svg-7oRzjs28wvWm1BXB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7oRzjs28wvWm1BXB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7oRzjs28wvWm1BXB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7oRzjs28wvWm1BXB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7oRzjs28wvWm1BXB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7oRzjs28wvWm1BXB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7oRzjs28wvWm1BXB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7oRzjs28wvWm1BXB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7oRzjs28wvWm1BXB .marker.cross{stroke:#333333;}#mermaid-svg-7oRzjs28wvWm1BXB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7oRzjs28wvWm1BXB p{margin:0;}#mermaid-svg-7oRzjs28wvWm1BXB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7oRzjs28wvWm1BXB .cluster-label text{fill:#333;}#mermaid-svg-7oRzjs28wvWm1BXB .cluster-label span{color:#333;}#mermaid-svg-7oRzjs28wvWm1BXB .cluster-label span p{background-color:transparent;}#mermaid-svg-7oRzjs28wvWm1BXB .label text,#mermaid-svg-7oRzjs28wvWm1BXB span{fill:#333;color:#333;}#mermaid-svg-7oRzjs28wvWm1BXB .node rect,#mermaid-svg-7oRzjs28wvWm1BXB .node circle,#mermaid-svg-7oRzjs28wvWm1BXB .node ellipse,#mermaid-svg-7oRzjs28wvWm1BXB .node polygon,#mermaid-svg-7oRzjs28wvWm1BXB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7oRzjs28wvWm1BXB .rough-node .label text,#mermaid-svg-7oRzjs28wvWm1BXB .node .label text,#mermaid-svg-7oRzjs28wvWm1BXB .image-shape .label,#mermaid-svg-7oRzjs28wvWm1BXB .icon-shape .label{text-anchor:middle;}#mermaid-svg-7oRzjs28wvWm1BXB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7oRzjs28wvWm1BXB .rough-node .label,#mermaid-svg-7oRzjs28wvWm1BXB .node .label,#mermaid-svg-7oRzjs28wvWm1BXB .image-shape .label,#mermaid-svg-7oRzjs28wvWm1BXB .icon-shape .label{text-align:center;}#mermaid-svg-7oRzjs28wvWm1BXB .node.clickable{cursor:pointer;}#mermaid-svg-7oRzjs28wvWm1BXB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7oRzjs28wvWm1BXB .arrowheadPath{fill:#333333;}#mermaid-svg-7oRzjs28wvWm1BXB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7oRzjs28wvWm1BXB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7oRzjs28wvWm1BXB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7oRzjs28wvWm1BXB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7oRzjs28wvWm1BXB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7oRzjs28wvWm1BXB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7oRzjs28wvWm1BXB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7oRzjs28wvWm1BXB .cluster text{fill:#333;}#mermaid-svg-7oRzjs28wvWm1BXB .cluster span{color:#333;}#mermaid-svg-7oRzjs28wvWm1BXB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7oRzjs28wvWm1BXB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7oRzjs28wvWm1BXB rect.text{fill:none;stroke-width:0;}#mermaid-svg-7oRzjs28wvWm1BXB .icon-shape,#mermaid-svg-7oRzjs28wvWm1BXB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7oRzjs28wvWm1BXB .icon-shape p,#mermaid-svg-7oRzjs28wvWm1BXB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7oRzjs28wvWm1BXB .icon-shape .label rect,#mermaid-svg-7oRzjs28wvWm1BXB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7oRzjs28wvWm1BXB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7oRzjs28wvWm1BXB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7oRzjs28wvWm1BXB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 数据面: 每次调用
控制面: 由你配置
路由表
制品 + 配置
预建 N 个环境
1 版本存储
2 别名配置
3 PC 管理器 +

自动扩缩
4 调用前端 +

计数服务
5 分配 + 放置
6 工作节点上的

执行环境

3.3 协作总览

本图回答:一个同步请求如何端到端变成响应?
执行环境 (微虚拟机) 放置服务 分配服务 计数服务 调用前端 + 别名解析 调用方 (API Gateway) 执行环境 (微虚拟机) 放置服务 分配服务 计数服务 调用前端 + 别名解析 调用方 (API Gateway) #mermaid-svg-1GsALApEXznXqb8D{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-1GsALApEXznXqb8D .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-1GsALApEXznXqb8D .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-1GsALApEXznXqb8D .error-icon{fill:#552222;}#mermaid-svg-1GsALApEXznXqb8D .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1GsALApEXznXqb8D .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-1GsALApEXznXqb8D .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1GsALApEXznXqb8D .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1GsALApEXznXqb8D .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-1GsALApEXznXqb8D .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1GsALApEXznXqb8D .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1GsALApEXznXqb8D .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1GsALApEXznXqb8D .marker.cross{stroke:#333333;}#mermaid-svg-1GsALApEXznXqb8D svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1GsALApEXznXqb8D p{margin:0;}#mermaid-svg-1GsALApEXznXqb8D .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-1GsALApEXznXqb8D text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-1GsALApEXznXqb8D .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-1GsALApEXznXqb8D .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-1GsALApEXznXqb8D .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-1GsALApEXznXqb8D .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-1GsALApEXznXqb8D #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-1GsALApEXznXqb8D .sequenceNumber{fill:white;}#mermaid-svg-1GsALApEXznXqb8D #sequencenumber{fill:#333;}#mermaid-svg-1GsALApEXznXqb8D #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-1GsALApEXznXqb8D .messageText{fill:#333;stroke:none;}#mermaid-svg-1GsALApEXznXqb8D .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-1GsALApEXznXqb8D .labelText,#mermaid-svg-1GsALApEXznXqb8D .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-1GsALApEXznXqb8D .loopText,#mermaid-svg-1GsALApEXznXqb8D .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-1GsALApEXznXqb8D .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-1GsALApEXznXqb8D .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-1GsALApEXznXqb8D .noteText,#mermaid-svg-1GsALApEXznXqb8D .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-1GsALApEXznXqb8D .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1GsALApEXznXqb8D .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1GsALApEXznXqb8D .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1GsALApEXznXqb8D .actorPopupMenu{position:absolute;}#mermaid-svg-1GsALApEXznXqb8D .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-1GsALApEXznXqb8D .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-1GsALApEXznXqb8D .actor-man circle,#mermaid-svg-1GsALApEXznXqb8D line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-1GsALApEXznXqb8D :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} alt 有空闲热环境 无空闲 → 冷启动 Invoke checkout:prod 1 认证授权 解析 prod → 版本 2 申请 1 单位并发 3 通过(或 429 限流) 4 需要 checkout:v8 环境 5 工作节点 W 上的 env-123 6 为 v8 创建环境 7 启动微虚拟机 运行 Init 8 env-456 就绪 9 env-456 10 投递事件 11 handler 结果 12 释放并发单位 13 200 响应 14

图注:正常路径------准入、解析、找到或创建环境、运行、释放。

重要的非正常流程(机制见深入篇):

  • 限流(Throttle) ------计数服务拒绝:账号或预留并发耗尽,或超过扩缩速率 → 429 TooManyRequestsException。→ 05.4
  • 溢出冷启动 ------PC 池全部忙碌 → 经放置服务创建按需环境。→ 05.3、05.5
  • 金丝雀回滚 ------把问题版本的别名权重设回 0。→ 05.2

结论

六个概念------函数、环境、并发、版本、别名、PC------加上六个组件,就是完整的地图。控制面组件决定运行什么 (版本)、以什么名字 (别名)、预热多少 (PC);数据面组件决定请求能否运行 (计数)、在哪里运行 (分配/放置),并真正运行它(环境)。


下一篇 → 04 贯穿示例 · 返回 00 总览


📚 返回专栏目录

相关推荐
ABB自动化2 小时前
本特利内华达3500系统
系统架构·云计算·系统安全·plc 控制器
Wonopop3 小时前
AWS Budgets 预算告警与卡片拒付,为什么不能共用一个“超支“状态?附对账模型与反例测试
云计算·aws·支付系统·对账·mpchat
七牛开发者3 小时前
从 AWS 到 OpenRouter,拆解 Agent 模型路由的工程设计
云计算·aws
Safeploy安策数据3 小时前
如何挑选专业的密钥管理体系?从制度、流程、工具三层评估
安全·云计算
瑞克-桑切斯4 小时前
13、DNS、DHCP 与 FTP 协议详解
linux·运维·云计算
雷工笔记6 小时前
实战:给 AI 助手 Hermes 接入阿里云百炼,WebUI 自由切换千问 8 个模型
阿里云·云计算
Geek-Chow6 小时前
04 · AWS Lambda 贯穿示例:ShopFast 黑五一周的金丝雀发布、预置并发与限流
云计算
DolitD7 小时前
水利数字孪生走向深水区,点量云流实时云渲染落地实践
安全·云原生·云计算·图形渲染
howdoyoudo2026067 小时前
AI审计手记 #30:从“政府网站”到“商业平台”——腾讯云沙箱AI代理越界事件的审计分析
大数据·人工智能·安全·机器学习·语言模型·云计算·腾讯云