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 上。队列通过确保事件的顺畅分发,使
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云攀登者-望正茂

你的鼓励是我前进的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值