AWS Lambda 内部机制探讨:QCon San Francisco 2023首日演讲总结
在2023年QCon旧金山大会的首日,AWS高级首席工程师Mike Danilov深入探讨了AWS Lambda的内部机制,特别是调用路由、计算基础设施和冷启动问题。他的演讲是“你一直好奇的架构”专题的一部分。
AWS Lambda概述
Danilov首先介绍了AWS Lambda的基本概念,包括其配置、同步和异步调用模型,以及其核心特性(可用性、效率、扩展性、安全性和性能)。Lambda由多个组件构成,但Danilov特别聚焦于调用路由和基础设施,以解决冷启动问题,目标是缩短Lambda函数的调用延迟分布。
调用路由系统优化
在2022年之前,AWS Lambda的调用路由系统在扩展性和可用性方面面临挑战。负责处理请求的Worker Manager难以应对日益增长的需求,导致系统负载过大。Sandboxes存储执行状态,但在区域故障时可能丢失状态,影响系统弹性。为此,AWS引入了Placement服务,尽管从故障中恢复仍然具有挑战性。
随后,AWS引入了持久存储,采用领导者-追随者模型,确保在故障期间不会丢失Sandbox状态,显著提升了调用路由系统的可靠性和持久性。Danilov指出,Assignment服务的引入和Rust编程语言的采用为调用路由系统带来了稳定性和性能提升,但这仅部分解决了冷启动问题。
计算基础设施优化
Danilov进一步描述了AWS Lambda的底层基础设施,包括Placement服务、容量管理器、Worker和数据科学团队。优化Lambda基础设施涉及数据科学团队驱动的Worker选择策略,通过分析指标、构建模型和预测,确保为每个任务选择合适的Worker。同时,重新评估路由策略以实现高效资源分配。
在数据隔离方面,Lambda通过虚拟机隔离为每个运行时提供独立的进程和Worker,增强了安全性。传统上,使用单一EC2虚拟机实例可能导致资源浪费,而在同一Worker上部署多个调用则提高了资源利用率。然而,当大量资源同时调用时,这种方法可能导致过载,特别是在单租户且Worker过剩的环境中。
Firecracker技术的应用
Firecracker技术的引入为Lambda带来了“微虚拟机”,推动了无服务器计算的发展。其集成使得Lambda能够在同一Worker上安全地执行并多路复用函数,服务于多个用户。然而,这种多路复用也带来了延迟分布和资源分配的复杂性,凸显了Lambda基础设施优化的持续挑战。
冷启动问题的解决
Danilov最后讨论了消除冷启动的思路,主要集中在调用部分,而非代码或运行时。Lambda采用复杂的方法处理快照,通过恢复虚拟机(VM)来实现。这些VM具有内存映射能力,能够深入文件磁盘和内存,特别是页面缓存。但由于侧信道攻击的安全隐患,Lambda无法使用共享内存进行诸如“读时复制”等任务。
VM克隆在Lambda的快照管理中扮演重要角色,每个克隆具有唯一标识,确保能够安全地从同一快照恢复。快照分发类似于视频流,按需下载快照,优化资源利用和效率。Lambda还采用按需块加载和块共享机制,结合收敛加密技术去重数据,减少本地磁盘缓存的负载。这些方法共同确保了Lambda在快照管理中的健壮性和高效性。
总结
Danilov总结道,调用路由处理可用性和扩展性,Lambda的计算基础设施负责效率和安全性,而冷启动则关乎性能。相关资源可在serverlessland页面获取。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。