Bendi新闻
>
AWS Lambda 中的 Rust:冷启动速度提升三倍、内存需求降低至 25%

AWS Lambda 中的 Rust:冷启动速度提升三倍、内存需求降低至 25%

10月前

作者 | Tim Anderson
译者 | 赵晓磊
策划 | Tina

最近 AWS Re:Invent 大会的一场演讲表明,Rust 和 Severless 简直是绝配——在成本方面,Rust 的优势可能比 Python 高出好几倍。

Lambda 函数和巨大的运行时环境是一对糟糕的组合(注:这里指 JAVA 和 Python 这类编程语言,相比 Rust 对运行时环境有更高的要求)——因为比起原生代码,它不仅冷启动速度更慢,对内存的需求也会更高。但另一方面,许多开发者在使用 Java 和 Python 时会比使用 Rust 这种系统语言时的开发效率更高。

在 re:Invent 大会演讲中,来自以色列特拉维夫的云咨询公司 CloudEX 的工程师主管 Efi Merdler-Kravitz 解释道:你并不需要用 Rust 对 Python Lambda 函数进行彻底的重构。他举了一个例子:一个使用 python 编写的,列出 S3 的存储桶的 Lambda 函数。事实证明,AWS 的 Python SDK Boto3 模块十分臃肿,仅需要使用 Rust 替换掉原本依赖的 Boto3 函数,即使其它代码依然使用 Python,也能在成本和性能方面获得巨大提升。

使用 Rust 替换 Python 代码的关键是 PyO3,它提供了将 Rust 的代码嵌入到 Python 中的能力。Rust 代码中的属性(Attributes)将暴露为像是标准的 Python 接口一样的函数。

在 Merdler-Kravitz 展示的例子中,使用 Rust 替换一部分 Python 代码的结果是,冷启动速度提升了三倍,同时内存需求也大大降低。使用 1GB 内存时,Rust 和 Boto3 具有相似的性能表现,但当内存降至 256MB 时,使用 Rust 优化的版本仍然表现良好,而纯 Python 版本则无法实现同样的效果。(注:在演讲中,Merdler-Kravitz 还强调了 Rust 在 256MB 内存下的性能表现,与 Python 在 1GB 内存下的性能表现基本相同,这意味着通过 Rust 进行优化后,内存需求可以降低到之前的 1/4。)

Lambda 中使用 Rust 的成本收益:re:Invent 中的一个展示案例 

减少所需的计算资源意味着成本更低,尤其是在 serverless 平台上(注:AWS Lambda 根据请求数量,执行代码的持续时间以及你为函数分配的内存量来计费)。Merdler-Kravitz 声称:“Rust 比 Python 平均便宜 2/3 到 3/4。”

在 re:Invent 期间,AWS 宣布其 Rust SDK 现已准备好投入生产环境使用。早在去年 11 月,这家云巨头就将基于“最小容器镜像(minimal container image)”的 Amazon Linux 2023 支持添加到了 Lambda 中。它表示,该支持的一个关键应用场景是“当使用需要原生编译的语言时,例如 Go 或 Rust。”

此外,还有一个为 AWS Lambda 提供的实验性的 Rust 运行时环境,可以简化使用 Rust 开发 Lambda 函数的操作,并包含了支持 Lambda 事件、Lambda 扩展和 Lambda 运行时 API 的 crates。有一个名为 Cargo Lambda 的项目与此相关,该项目支持在本地使用 Lambda 模拟器进行开发和测试,以及在 Windows 或 macOS 上开发时,将代码编译构建为 Linux 的可执行文件,无论开发者自己的 PC 是使用的 ARM64 还是 x86-64 都可以完成相应的编译构建。使用 Rust 构建 Lambda 函数的官方文档可在 此处 查阅。

实验性代码不适用于生产环境,因此 Rust 在 Lambda 方面的应用还处于早期阶段,但看起来潜在收益或许相当可观。

(注:Merdler-Kravitz 在演讲中总共介绍了 3 种使用场景,除了本文中介绍的利用将 Rust 代码嵌入到 Python 中的方式对现有代码中性能表现较差的部分进行重构和使用 AWS Lambda 提供的 Rust runntime client 在本地从零开始创建一个 Rust 项目的两个场景外,还介绍了使用 Rust 编写 Lambda 扩展的场景,通过扩展的方式将与业务核心逻辑无关但又必要的部分,如监控指标和日志上报等功能抽离出来,与业务核心逻辑进行异步处理,实现降低响应延迟的效果。并对三种场景下,Rust 版本和原版本的成本和性能都做了详尽的对比,得出了如下结论:场景一的方案适用于已经运行的程序中存在明显性能瓶颈,全部重构又有较大的风险和成本,这时寻找到其中运行较慢的小段代码并使用 Rust 进行重构在成本和性能方面都会带来明显受益;场景二依然在实验阶段,虽然可以在性能和成本方面带来极大受益,但当前还不推荐直接用于生产环境;场景三在成本方面不会有明显收益,在热启动时可以优化响应的延迟,但在冷启动时延迟会比不使用扩展时更高。)

原文链接

Rust in AWS Lambda: a magic ingredient to reduce cost and increase performance?(https://devclass.com/2023/12/21/rust-in-aws-lambda-a-magic-ingredient-to-reduce-cost-and-increase-performance/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

谷歌新年大裁员,引硅谷裁员潮!OpenAI正式推出GPT Store,但第一批应用已被像素级抄袭;腾讯服务器深夜崩溃 | Q资讯

纯向量数据库和向量插件都有局限,那未来发展有其他方向吗?

系统 bug 致百人入狱,砸了 2.8 亿元仍上云失败!二十年了,这家大企业被日本软件坑惨了

钉钉抢做“中国版 GPT Store”

微信扫码关注该文公众号作者

来源:InfoQ

相关新闻

雍禾医疗2023年营收同比增长25.8%:高端服务占比提升、多维创新领跑行业深入解析 AWS Lambda:揭秘其内部工作原理深圳选调官宣认可60所海外大学:美国25所、英国9所ICLR 2024 | 微软提出全新LLM剪枝方法:参数减少25%,大幅提升计算效率Bilt Rent Day 活动【7月活动预告:AS转点25%-100%奖励、Status Match】AWS Fargate 显著提升 Windows 容器的启动时间香港抢人2.0升级版来袭:高才通将扩大至内地前25大学,并同步优化人才福利?爆赚20亿美元,《大富翁Go》CEO:真没骗你、买量不到收入25%FreeCash 介绍与攻略:多种方式赚美元,很多高奖励任务,提现速度超快【1/21:最高 $250 注册抽奖】实时湖仓 TOP 10:腾讯云、阿里云、华为云、AWS、星环、滴普、科杰、H3C、镜舟、亚信25岁孕妇死于以色列空袭,腹中婴儿被救出!她的家人此前都已在袭击中丧生,她是唯一幸存者!国际法院、欧盟:以色列占领违法精读《货币和信用理论》100讲:第25讲 货币供需比率的变化引起货币购买力的波动:货币存量和货币需求领事服务进社区:中国驻纽约总领馆将于5月25日至26日在波士顿受理有关领事证件申请的通知定了!美国传来最新消息:华人、留学生,要开始注意这件事!1月25日开始!上海、北京、杭州等多地医院破产清算!网友回应:已降薪25%!想跳槽三甲,还有望吗……4/25 波士顿新闻总汇 | 麻州版“速度与激情”:93号公路发生路怒枪击事件 波士顿一学校发生暴力冲突 麻州教师被控持枪威胁谨记今年这些报税缴税关键日期!法国迎25°C!2月起,电费上涨8.6%至9.8%!消协:某些家庭已负担不起Rust 不是“解药”!25 年经验资深安全从业者:可能比 C 更不安全直播预告:好的经济学,会烛照社会前进的方向——5月25日,请刘业进、张是之为我们聊聊“奥派经济学”风暴警告 冷到瘫痪!暴雪寒流重创美国中西部:7600多航班延误 25万户断电!3月31日起,国航北京首都-纽约、洛杉矶增班,国航中美航线将增至每周14班;4月25日起,南航新开法兰克福-沈阳-广州航线5/25/2024-5/31/2024 法拉盛新龍興:逛超市没有文案,只有快乐,而提升幸福感最简单的方式,当然又是逛超市啦!注意!25cm大雪今天杀到!大多伦多风暴警告:冻雨、强风,避免出行!25Fall美研申请注意:UCSD【金融】变更为【量化金融】;UMich、USC这些研究生项目免GRE!
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。