LLRT:低延迟 JavaScript 运行时用于无服务器函数
LLRT(低延迟运行时),来自亚马逊网络服务,是一个为需要最小冷启动延迟的无服务器函数构建的实验性JavaScript运行时。它在Rust核心内的QuickJS引擎上运行JavaScript,以减少与传统运行时相比的启动时间和内存使用。关键功能包括超快的冷启动、低内存配置、部分Node.js API兼容性,以及AWS SDK v3的预编译子集。无服务器开发人员和云架构师从LLRT中获得最大的价值。
LLRT 如何减少冷启动延迟?
LLRT 通过省略非必要的平台功能并使用紧凑的执行路径来针对冷启动。该项目使用 QuickJS 进行脚本执行,并使用 Rust 核心来最小化初始化开销,作者报告称这种组合可以产生高达 比 Node.js 快 10 倍 的启动时间。这个设计牺牲了一些平台的完整性,以换取减少首次调用延迟,这对短暂存在的无服务器函数很重要。
LLRT 是否符合常见的 Lambda 平台要求?
该运行时主要针对 Linux x86_64 和 ARM64,以与无服务器执行环境对齐。官方预构建的二进制文件集中在 Linux 和 macOS 上,这简化了针对这些目标的云部署。在 Windows 上测试需要从源代码编译,增加了构建步骤。架构师在为与 Lambda 兼容的环境准备部署包时,应包括针对 Linux 的构建或使用提供的 macOS/Linux 工件。
在生产工作流中采用 LLRT 是否安全?
AWS 将 LLRT 标记为实验项目,因此在关键服务中采用它需要验证。该项目因性能而受到赞扬,但它并未实现完整的 Node.js 标准库,因此不是直接替代品。团队应在现实负载下运行集成和依赖性测试,并在将实时流量路由到基于 LLRT 的函数之前确认服务集成的行为。
迁移现有函数是否需要额外的工具或专业知识?
迁移需要构建管道和 API 检查,因为 LLRT 仅执行 JavaScript。TypeScript 必须使用如 esbuild 或 swc 的打包工具进行转译,然后才能部署,并且 Node 标准库调用可能需要替换。推荐的迁移步骤包括:
- 转译 TypeScript 并打包依赖项
- 替换不支持的 Node 特定调用
- 在暂存环境中运行集成和冷启动测试
采用的实际建议
LLRT适合那些愿意添加构建步骤并进行全面阶段测试的团队。首先在非关键、对延迟敏感的功能上使用它,并在更广泛的推广之前验证端到端行为。保持回滚计划,并在每次部署后监控调用指标,以便及早发现回归。在您建立对CI管道的信心时,将运行时视为实验性。推荐。