扫一扫分享
LLRT(低延迟运行时)是一种轻量级 JavaScript运行时,旨在满足对快速高效的无服务器应用程序不断增长的需求。
与AWS Lambda上运行的其他 JavaScript 运行时相比, LLRT 的启动速度提高了10 倍以上,总体成本降低了2 倍 它采用 Rust 构建,利用 QuickJS 作为 JavaScript 引擎,确保高效的内存使用和快速启动。
更快的启动时间:LLRT 的启动速度比其他在 AWS Lambda 上运行的 JavaScript 运行时快 10 倍以上。这种速度优势对于需要快速响应传入请求的 Serverless 函数至关重要。
节省成本:LLRT 的整体成本比其他运行时低 2 倍以上。通过优化内存使用和减少启动时间,它有助于最小化运行无 Serverless 工作负载的成本。
基于 Rust 构建:LLRT 使用 Rust 实现,这是一种系统编程语言,以其性能、安全性和内存效率而闻名。
QuickJS 引擎:LLRT 使用 QuickJS JavaScript 引擎。QuickJS 是一个小巧且可嵌入的用 C 语言编写的引擎,非常适合像 LLRT 这样的轻量级运行时。
与像 Node.js、Bun 或 Deno 这样的通用运行时不同,LLRT 专注于 Serverless 环境的需求。以下是一些关键区别:
无 JIT 编译器:与 Node.js 依赖即时(JIT)编译不同,LLRT 不包含 JIT 编译器。这种设计选择简化了系统复杂性,减少了运行时大小,同时节省了 CPU 和内存资源。
打包依赖项:为了实现加速,LLRT 要求开发者将他们的代码和依赖项打包到一个单独的 .js 文件中。这消除了模块解析期间的文件系统查找,这是其他运行时中常见的瓶颈。
预编译 AWS SDK:LLRT 将 AWS SDK 的部分内容预打包和预编译为字节码。这种方法进一步有助于加快应用的启动时间。
数据转换:LLRT 在需要低延迟的数据处理任务中表现出色。
实时处理:对于实时工作负载,例如事件驱动处理或流式数据,LLRT 的快速启动时间是无价的。
AWS 服务集成:在与 AWS 服务如 DynamoDB
确保代码与 LLRT 兼容的最佳方法是编写测试并使用内置测试运行器执行它们。测试运行程序当前支持 Jest/Chai 断言。您可以创建两种主要类型的测试:
单元测试
端到端 (E2E) 测试
由于 LLRT 适用于对性能要求较高的应用程序,因此不建议在未进行捆绑、最小化和树形抖动的情况下部署 node_modules。
LLRT 可与您选择的任何捆绑程序配合使用。以下是一些常用捆绑程序的配置:
ESBuild
esbuild index.js --platform=node --target=es2020 --format=esm --bundle --minify --external:@aws-sdk --external:@smithy --external:uuid
Rollup
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import terser from "@rollup/plugin-terser";
export default {
input: "index.js",
output: {
file: "dist/bundle.js",
format: "esm",
sourcemap: true,
target: "es2020",
},
plugins: [resolve(), commonjs(), terser()],
external: ["@aws-sdk", "@smithy", "uuid"],
};
import TerserPlugin from "terser-webpack-plugin";
import nodeExternals from "webpack-node-externals";
export default {
entry: "./index.js",
output: {
path: "dist",
filename: "bundle.js",
libraryTarget: "module",
},
target: "web",
mode: "production",
resolve: {
extensions: [".js"],
},
externals: [nodeExternals(), "@aws-sdk", "@smithy", "uuid"],
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
ecma: 2020,
},
}),
],
},
};
手机预览