AWS Lambda 架构深入探究

AWS Lambda 是现代云架构中最受欢迎的服务之一,因其能够在完全托管的无服务器环境中运行代码而广受认可。然而,尽管 Lambda 广受欢迎,许多开发者和架构师对它的底层运作机制却知之甚少,常常将其视为“编写能够在云端神奇运行的代码”的简单方法。

本文将探讨 AWS Lambda 背后的架构,详细解析它如何以真正的无服务器方式管理实例、配置资源并处理执行。最终,您将全面了解 Lambda 的内部工作原理,从而能够进行更明智的优化,并在应用程序中更有效地利用它。

Lambda 中的关键概念


在讨论无服务器和云计算时,务必记住服务器确实在后台运行。但是,这些服务器完全由云提供商管理—​​—这意味着它们负责配置、扩展、安全和隔离。这使得开发者可以专注于他们的应用程序,而无需承担管理基础设施的开销。

让我们深入了解 Lambda 架构中您需要了解的一些基本概念。

Lambda 运行时


AWS Lambda 通过使用运行时支持多种编程语言。运行时提供特定于语言的环境,用于管理 Lambda 和函数代码之间调用事件、上下文信息和响应的传递。您可以从 AWS 提供的运行时中进行选择,或者,如果您的应用程序需要不同的环境,您可以灵活地创建自定义运行时。

每个受支持的编程语言的主要版本都带有唯一的运行时标识符,例如 nodejs20.x 或 python3.13,允许您选择最适合您应用程序需求的版本。


工作主机和 MicroVM


Lambda 使用工作主机(EC2 Spot 实例)运行,这些主机管理由 Firecracker(我们接下来会讨论 Firecracker)构建的众多 microVM(承载执行环境的虚拟机)。每个 microVM 都专用于单个函数调用,从而确保执行环境的隔离和安全。此外,该架构的设计使得多个工作器主机可以并发处理同一 Lambda 函数的调用。这种设置不仅提供了高可用性和强大的负载均衡,还增强了服务在不同可用区之间的可扩展性和可靠性;


Worker 的最大租约期限为 14 小时。当 Worker 达到最大租约期限时,将不再路由任何调用,MicroVM 将被正常终止,底层 Worker 实例也将终止。Lambda 会持续监控其队列生命周期内的活动并发出警报。

Firecracker


Firecracker 是驱动所有 Lambda 函数的引擎。它是 Amazon 开发的虚拟化技术,使用 Rust 编写。

Firecracker 是 Lambda 架构中的一个重要组件。它支持为每个函数调用创建轻量级、安全的 microVM。此机制确保根据 Lambda 函数的需求高效地分配和扩展资源;

Firecracker 在 EC2 Spot 实例内管理 MicroVM,而 Lambda 服务则管理所有工作线程


Lambda 调用


AWS Lambda 提供多种调用方法以满足各种应用需求,其架构旨在高效支持每种方法。目前为止,我们讨论的关键概念根据所使用的调用方法以不同的方式运作,并以不同的方式进行交互,从而优化性能和可扩展性。

在深入了解 Lambda 环境中如何处理每个调用之前,让我们先回顾一下可用的调用类型。

  • 同步调用:通常用于 API 等交互式工作负载。例如,API 网关触发 Lambda 函数,该函数随后查询数据库并直接响应。此方法即时响应,适用于实时数据处理。
  • 异步调用:用于处理上传到 S3 的数据等场景。事件触发由 AWS Lambda 管理的内部队列,然后该队列异步处理该函数。此方法非常适合不需要立即响应触发事件的工作负载。
  • 事件源映射:对于 Kinesis 或 DynamoDB Streams 等流数据服务尤其有用。Lambda 会轮询这些源,并根据传入的数据调用相应的函数。此方法能够高效地进行批处理,对于处理连续数据流的应用程序而言至关重要。

Lambda 通用架构


Lambda 函数的调用方式多种多样,虽然调用方法会根据触发它的服务而有所不同,但其核心内部架构保持一致。然而,Lambda 与同步 (Sync) 和异步 (Async) 调用的交互方式有所不同。


每个 Lambda 调用的核心都是前端服务,它是 Lambda 函数的入口点。当 Lambda 函数被调用时,前端服务会管理请求并将其定向到相应的数据平面服务,从而启动执行流程。

Lambda 函数的调用主要有两种方式:同步或异步。

  • 同步调用:在同步调用中,前端服务会将请求直接路由到 MicroVM 进行立即处理。
  • 异步调用:对于异步调用,前端服务会将请求放入 Lambda 内部的队列中。这种内部排队机制可以有效地将排队事件分发到可用的 MicroVM 上。队列通过确保事件的顺畅分发,使

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android audio系统五 AudioPolicy 策略配置详解

引用:Android 音频策略配置文件解析流程 audio_policy_configuration.xml 是 Android 音频系统的核心配置文件,它定义了音频硬件接口、设备路由和基本策略。下面我将详细介绍这个文件的结构、关键配置项和实际应用。audio_policy_configuration.xml 是 …

4.21日学习--引用

引用本质:引用的本质在 c 内部实现是一个指针常量。 代码中 int& ref a; 可以理解为 int* const ref &a;(指针常量)。 指针常量:指针指向不可变(绑定 a 后,不能再指向其他变量)&…

2.1 数据处理

1. 数据获取方法 掌握公开数据集的使用、数据质量评估指标、了解常见的网络爬虫技术 🧩 一、公开数据集的使用 ✅ 常见平台(一定要熟) 平台简介示例数据集Hugging Face Datasets专注 NLP、CV 领域的大模型训练数据集库IMDB、SQuAD、Common …

Qt QWidget和QML实现窗口拖动源码分享

一、QWidget实现窗口拖动 .hpp QPoint pressedPoint; bool leftBtnPressed false;.cpp bool PetWidget::eventFilter(QObject *obj, QEvent *event) {if(obj this){if(event->type() QEvent::MouseButtonPress){QMouseEvent* e static_cast<QMouseEvent *>(event)…

在pycharm中搭建yolo11分类检测系统--PyQt5学习(二)

第二部分 测试本地pycharm通过程序连接远程服务器autodl 模型的推理需要借助远程服务器autodl&#xff0c;但是界面的运行是在pycharm中&#xff0c;我的设想是按钮调用一个py文件就好了。 1. 本地运行PyQt5界面。 2. 当需要载入权重时&#xff0c;通过SSH连接到AutodL服务…

前端框架的“快闪“时代:我们该如何应对技术迭代的洪流?

引言&#xff1a;前端开发者的"框架疲劳" “上周刚学完Vue 3的组合式API&#xff0c;这周SolidJS又火了&#xff1f;”——这恐怕是许多前端开发者2023年的真实心声。前端框架的迭代速度已经达到了令人目眩的程度&#xff0c;GitHub每日都有新框架诞生&#xff0c;n…

基于YOLO11的遛狗牵绳识别预警系统

基于YOLO11的遛狗牵绳识别预警系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】预训练模型与数据集说明 【四】需要列出所有的类别&#xff0c;并且加入识别的类别数量&#xff1a;4类 0: dog (狗) 1: leash (牵引绳) 2: person …

Spring MVC 一个简单的多文件上传

原始代码逐行解释 PostMapping("/uploads") // ① 声明处理POST请求&#xff0c;路径为"/uploads" ResponseBody // ② 直接返回数据到响应体&#xff0c;不进行视图解析 public String uploads(MultipartFile[] files, // …

C++继承(最详细)

目录 1.继承的概念以及定义 1.1 继承的概念 1.2 继承的定义 ​编辑 2.继承中的作用域 3.基类和派生类间的转换 4.派生类的默认成员函数 5.实现不被继承的类 6.継承与友元 ​编辑 7.继承与静态成员 8.多继承及其菱形继承问题 8.2 虚继承 8.3 来看一个小题 9.继承…

day35图像处理OpenCV

文章目录 一、图像预处理17 直方图均衡化17.1绘制直方图17.2直方图均衡化1. 自适应直方图均衡化2. 对比度受限的自适应直方图均衡化3. 示例 19 模板匹配 一、图像预处理 17 直方图均衡化 直方图&#xff1a;反映图像像素分布的统计图&#xff0c;横坐标就是图像像素的取值&…

【音视频】FFmpeg内存模型

FFmpeg内存模型 从现有的Packet拷贝一个新Packet的时候&#xff0c;有两种情况&#xff1a; 两个Packet的buf引用的是同一数据缓存空间&#xff0c;这时候要注意数据缓存空间的释放问题&#xff1b;两个Packet的buf引用不同的数据缓存空间&#xff0c;每个Packet都有数据缓存…

1.2软考系统架构设计师:系统架构的定义与作用 - 练习题附答案及超详细解析

系统架构定义与作用综合知识单选题 题目覆盖核心概念、发展历程、设计原则、评估标准及易混淆点&#xff0c;附答案解析&#xff1a; 1. 系统架构的标准定义源自于以下哪个标准&#xff1f; A. ISO/IEC 9126 B. IEEE 1471-2000 C. TOGAF 9.2 D. ITIL v4 答案&#xff1a;B 简…

go语言对http协议的支持

http&#xff1a;无状态协议&#xff0c;是互联网中使用http使用http实现计算机和计算机之间的请求和响应 使用纯文本方式发送和接受协议数据&#xff0c;不需要借助专门工具进行分析就知道协议中的数据 服务器端的几个概念 Request&#xff1a;用户请求的信息&#xff0c;用…

iscsi服务端安装及配置

1. 安装targetcli软件包 yum install -y targetcli 2. 启动target服务 systemctl start target systemctl enable target 3. 配置防火墙 firewall-cmd --add-port"3260/tcp" 3. 准备一个物理分区&#xff08;或者逻辑分区&#xff09;…

解决 MongoDB 查询中的 `InvalidMongoDbApiUsageException` 错误

您在使用 Spring Data MongoDB 时遇到了 InvalidMongoDbApiUsageException 异常&#xff0c;错误信息如下&#xff1a; “由于 com.mongodb.BasicDocument 的限制&#xff0c;您无法添加第二个 ‘null’ 条件。查询已经包含 ‘{ “KaTeX parse error: Expected }, got EOF at e…

一个关于相对速度的假想的故事-4

回到公式&#xff0c; 正写速度叠加和倒写速度叠加的倒写相等&#xff0c;这就是这个表达式所要表达的意思。但倒写叠加用的是减法&#xff0c;而正写叠加用的是加法。当然是这样&#xff0c;因为正写叠加要的是单位时间上完成更远的距离&#xff0c;而倒写叠加说的是单位距离需…

重学React(一):描述UI

背景&#xff1a;React现在已经更新到19了&#xff0c;文档地址也做了全面的更新&#xff0c;上一次系统性的学习还是在16-17的大版本更新。所以&#xff0c;现在就开始重新学习吧&#xff5e; 学习内容&#xff1a; React官网教程&#xff1a;https://zh-hans.react.dev/lea…

AI大模型:(二)2.3 预训练自己的模型

目录 1.预训练原理 2.预训练范式 1.未标注数据 2.标注数据 3.有正确答案、也有错误答案 3.手撕transform模型 3.1.transform模型代码 3.2.训练数据集 3.3.预训练 3.4.推理 4.如何选择模型

gradle可用的下载地址(免费)

这几天接手一个老项目&#xff0c;想找gradle老版本的&#xff0c;但一搜&#xff0c;虽然在CSDN上搜索出来一堆&#xff0c;但都是收费&#xff0c;有些甚至要几十积分(吃相有点难看了)。 我找了一个能访问的地址&#xff0c;特地分享出来&#xff0c;有需要的自取&#xff01…

vue3新增特性

一、Vue 3 新增特性 1. Composition API 概述: Composition API 提供了一种更灵活和强大的方式来组织和复用逻辑。适用于复杂组件和逻辑复用场景。主要功能: setup 函数:组件的入口点,用于定义响应式数据、方法、生命周期钩子等。响应式 API:ref 和 reactive 提供更细粒度…