Vercel 中的 Rust 和 WebAssembly serverless 函数

本文介绍了如何在Vercel Serverless中利用WebAssembly和Rust提升性能。通过WasmEdge运行时,开发者可以创建高性能的serverless函数,部署在公共云或边缘计算节点上。文章通过图片处理和AI推理两个示例,展示了如何构建和部署这些函数,强调了WebAssembly的安全性、可移植性和性能优势。
摘要由CSDN通过智能技术生成

Vercel 是开发和托管 Jamstack 应用程序的领先平台。与传统 Web 应用程序在 runtime 从服务器动态生成 UI 不同,Jamstack 应用程序由静态 UI( HTML 和 JavaScript )和一组通过 JavaScript 支持动态 UI 元素的 serverless 函数组成。

Jamstack 的方式有很多好处。 这其中最重要的好处之一是其强大的性能。由于 UI 不再从中心服务器的 runtime 生成,因此服务器上的负载要少得多,我们可以通过边缘网络(例如 CDN)部署 UI。

但是,边缘 CDN 只解决了分发静态 UI 文件的问题。后端的 serverless 函数可能仍然很慢。事实上,目前流行的 serverless 平台存在众所周知的性能问题,例如冷启动缓慢,对于交互式应用程序尤其如此。在这方面, WebAssembly 大有可为。

使用 WasmEdge,一个 CNCF 托管的云原生的 WebAssembly runtime , 开发者可以编写高性能 serverless 函数,部署在公共云或边缘计算节点上。本文中,我们将探索如何使用 Rust 编写的 WasmEdge 函数来驱动 Vercel 应用程序后端。

为什么在 Vercel Serverless 使用 WebAssembly ?

Vercel 平台已经有了非常易于使用的 serverless框架 ,可以部署 Vercel 中托管的函数。正如上面讨论的,使用 WebAssembly 和 WasmEdge 是为了进一步提高性能。用 C/C++、Rust 和 Swift 写的高性能函数可以轻松编译成 WebAssembly。这些 WebAssembly 函数比 serverless 函数中常用的 JavaScript 或 Python 快得多。

那么问题来了,如果原始性能是唯一的目标,为什么不直接将这些函数编译为机器本地可执行文件呢?这是因为 WebAssembly “容器”仍然提供许多有价值的服务。

首先,WebAssembly 在 runtime 层级隔离了函数。代码中的错误或内存安全问题不会传播到 WebAssembly runtime之外。随着软件供应链日渐变得愈加复杂,将代码在容器中运行,以防止别人未经授权通过依赖库访问您的数据,这点非常重要。

其次,WebAssembly 字节码是可移植的。开发者只需构建一次,无需担心未来底层 Vercel serverless 容器(操作系统和硬件)的改变或更新。它还允许开发者在相似的托管环境中重复使用相同的 WebAssembly 函数,如腾讯 Serverless Functions 的公有云中,或者在像 YoMo 这样的数据流框架中。

最后, WasmEdge Tensorflow API 提供了最符合 Rust 规范的、执行 Tensorflow 模型的方式。WasmEdge 安装了 Tensorflow 依赖库的正确组合,并为开发者提供了统一的 API。

概念和解释说了很多,趁热打铁,让我们看看示例应用程序!

准备工作<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值