WasmEdge (曾用名 SSVM) 成为 CNCF 沙箱项目
WasmEdge runtime (曾名 SSVM)是一个轻量级高性能 WebAssembly (WASM) 虚拟机,为边缘进行了优化。WasmEdge 可以应用于 severless 云函数、SaaS、区块链智能合约、物联网、汽车实时软件应用等多种场景。
WasmEdge 最近被 CNCF 基金会接受为沙箱项目。 这是全球范围内首个被 CNCF 纳入托管的开源 WebAssembly runtime 项目。可以预见,WasmEdge 作为边缘云的 mission critical 轻量级 runtime,将在 CNCF 的开源云计算领域发挥重要作用。
源代码: https://github.com/WasmEdge/WasmEdge
开始
二十五年前,Java 编程语言最初是作为浏览器小组件被发明出来。但 Java 最终是在服务器端大获成功。后来,JavaScript 通过 Node.js 重复了同样的从浏览器到服务器/云的迁移路径。今天,再一次,WebAssembly 正在从浏览器向云迁移。 WasmEdge 在这一历史性迁移中,走到了前沿。
历史总是相似的,但从不重演。虽然 WebAssembly 从浏览器迁移到云的驱动因素与之前的 Java 和 JavaScript 相同,例如得到年轻开发者采用,受欢迎的编程语言 (Rust), 但更重要的是,WebAssembly 也非常适合处理现代云计算工作。特别是,WebAssembly 的轻量级设计和先进的安全模型,加上 Rust 语言的内存安全性,使其很好地适用云上的高性能且使命关键(mission critical) 的应用程序。尤其是在边缘云、物联网设备和汽车上。传统的容器和虚拟机太笨重且速度太慢,WebAssembly 可能成为领先的 runtime 技术。
WasmEdge,曾用名 SSVM,是一个开源 WebAssembly 虚拟机,针对边缘设备进行了优化。根据 IEEE Software 杂志上发表的一篇研究论文,WasmEdge 具有先进的 AOT 编译器支持,是当今市场上最快的 runtime。
WasmEdge 的关键特性
WasmEdge 与 W3C WebAssembly 标准完全兼容。 开箱即用,得到标准语言和编译器工具链的支持,例如 LLVM、Rustc 和 emscripten。 WasmEdge 的与众不同之处在于它对标准与非标准扩展的支持,尤其是在边缘计算方面相关的扩展。
首先,WasmEdge 支持 W3C 可选的 WebAssembly 特性和提案,例如 WebAssembly 系统接口(WASI)规范、引用类型、大容量内存操作和 SIMD。 WasmEdge 也在探索 wasi-socket 提案,以支持 WebAssembly 程序中的网络访问。
此外,WasmEdge 支持针对特定应用场景设计的非标准扩展。
Tensorflow。开发者可以使用简单的 Rust API,编写 Tensorflow 推理函数,然后在 WasmEdge 内部以本机速度安全地运行该函数。我们也正在努力支持其他 AI 框架。(欢迎加入 WasmEdge 社区)
命令接口。WasmEdge 让 Webassembly 函数可以执行宿主机操作系统的本地命令。它支持传递参数、环境变量、STDIN/STDOUT pipes 和主机访问的安全策略。
以太坊。WasmEdge Ewasm 扩展支持编译为 WebAssembly 的以太坊智能合约。它是以太坊风格的 WebAssembly (Ewasm) 的领先实现。
Substrate。 Pallet 让 WasmEdge 能在任何基于 Substrate 的区块链上充当以太坊智能合约执行引擎。
最后,WasmEdge 是一个云原生的 WebAssembly VM。它支持 OCI(开放容器计划)规范,这能够让像 Kubernetes 这样的云原生编排工具管理 WasmEdge 实例。
[Image: architecture.png]WasmEdge 之前名为 SSVM。
应用场景
WasmEdge 为边缘和嵌入式应用场景优化。它能把软件及硬件产品转变为开发者平台。 下面是一些具体的应用场景。
Jamstack 应用由带有 JavaScript 的静态前端组成,用于与后端 API 进行交互。这是现在最流行的现代 web 应用程序架构。前端静态文件可以通过 CDN 分发,后端函数可以托管在边缘节点上。基于云的 WasmEdge 为 Jamstack app 托管安全且高性能的后端 Serverless 函数,特别是在边缘云上。
SaaS 应用常常需要按客户要求为“边缘场景”调整或者定制。有了 WasmEdge,SaaS 应用程序可以直接嵌入和执行用户提交的代码作为工作流的一部分(例如,作为处理来自 SaaS 应用程序的事件的回调函数)。
案例:飞书应用平台可以通过 WasmEdge 嵌入用户提交的 serverless 函数来回复消息 (例如聊天机器人)。
WasmEdge 被调整为适用边缘设备的各种嵌入式和实时操作系统。 开发者只需用 Rust 或 C 编写一次高性能应用程序,就能在许多边缘设备平台上安全地运行。
进行中:将 WasmEdge 移植到 SeL4 实时操作系统
计划中:WasmEdge 可用作自动驾驶汽车中软件模块的 RTOS 代码 runtime。
区块链智能合约由用户提交的代码,由网络中的所有节点执行。 WasmEdge 得到了头部的区块链项目采用,作为智能合约执行引擎。案例:Substrate 和 Polkadot 上的EWASM 智能合约。
展望未来
WebAssembly 生态仍处于早期阶段。 WasmEdge 由 CNCF 托管,旨在成为 WebAssembly 及其边缘相关扩展的开源“参考实现”。 社区可以首先在 WasmEdge 上试验新的扩展想法,然后将成功的扩展标准化。WasmEdge 社区还将为编译器工具链和 SDK 做出贡献,以支持允许更多编程语言的 WebAssembly 和 WasmEdge 扩展。
加入我们的 WebAssembly 革命!
👉 Slack 组群:加入 CNCF slack channel,搜索 WasmEdge 加入 WasmEdge Slack Channel。
👉 订阅邮件:发邮件至 WasmEdge@googlegroups.com
👉 成为贡献者: 查看贡献灵感清单 开始为 WasmEdge 做贡献
版权声明: 本文为 InfoQ 作者【Michael Yuan】的原创文章。
原文链接:【http://xie.infoq.cn/article/3ef69b09623224f79d86eb916】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论