为什么说软件服务的未来必然是WebAssembly?

5,462 阅读4分钟

WebAssembly(WASM)最初由W3C 的Mozilla、谷歌、微软、苹果等著名公司合作研发,是浏览器内应用程序的高性能执行引擎。随着WASM 在开发者社区中越来越流行,WASM 也正在从客户端迁移到服务端,成为服务端技术的新锐。

价值定位

WASM 从客户端到服务端的迁移,与Java 和 JavaScript 等前几代技术的发展历程一脉相承。与现有解决方案相比,WASM 在服务端提供了一些重要的价值。

与Java 和 JavaScript 引擎相比,WASM 通过LLVM 工具链支持20多种编程语言,从而让开发人员有选择语言工具的自由,大大提高了生产力。特别是,它支持有影响力的新锐编程语言,例如Rust 。同时,WASM 可以轻松支持CPU、GPU、 AI 优化芯片和FPGA 等硬件功能。

它提供了接近于本机代码的性能,而又不牺牲安全性。

图片来源:steveklabnik.github.io/booster2018…

与Docker之类的容器相比,它为开发人员提供了更抽象的代码执行环境,从而提高了开发效率。它可以直接部署代码和应用程序,而不必启动操作系统。Wasm 程序不需修改,就可以在不同的操作系统上运行。这与当今的云原生微服务架构配合得很好。

WASM 消耗的内存和资源比操作系统级别的容器少得多。其模块化的安全模型允许为每个函数调用配置硬件和操作系统资源,从而在保证安全性的同时,保留了本机性能。

如果在 2008 年已经有了 WASM + WASI,那么我们压根无需创始 Docker 这个项目了。 Wasm 就有这么重要!服务器上的 WebAssembly 是计算的未来。 — Docker 联合创始人 Solomon Hykes

此外,服务器端 WASM 受益于这几年源于区块链社区的重大创新。

区块链先行一步

服务器端 WASM 目前处于早期阶段,还有大量的工作亟待完成,包括优化、开发工具和集成库,然后才能在企业中大规模应用。但是,开发者已经在企业计算、去中心化的区块链应用等新兴领域中将其用于微服务。

区块链智能合约是不可更改并且自动执行的代码。去中心化的应用(或 dapps )可以通过 Web 界面与智能合约进行交互。这使得智能合约成为自然的微服务。

以太坊,EOS 和 Polkadot 等大型公共区块链网络(公链)都致力于采用 WASM 作为其下一代执行引擎。因此,公链是当今编写和部署 WASM 服务的最佳平台。

服务端 WASM 受益于近年来投入到区块链领域的数十亿美元的研发投资。这些区块链研发创新的许多都与企业应用高度相关。

  • 执行结果确定的应用程序
  • 对共享资源进行操作码级别的准确计费
  • 对计算结果的无信任共识
  • 对数字货币基础设施的支持
  • 应用程序的形式化验证
  • 零知识计算

让代码说话

区块链应用已经做出了可演示的去中心化的微服务 Demo。以在 Second State 的 BUIDL 开发工具开发区块链应用为例,花上几分钟就可以在区块链网络上部署微服务,然后在此基础上构建一个去中心化的 Web 应用程序。

BUIDL 中的示例程序的“后端”是区块链智能合约(微服务)。智能合约是去中心化与云原生的。

Second State 的 BUIDL 还能将 WASM 智能合约部署到以太坊基金会的 Ewasm 测试网上

服务端 WASM 的下一个爆发点是区块链之外的企业应用。在数据中心里,WASM 提供多种语言的服务(支持服务端上的 Rust !),支持多种硬件和操作系统平台,占用很少计算资源,并且可以直接触达底层硬件(比如 GPU 和 AI 芯片)。您可以在此处查看在WASM中运行Rust服务的概念演示

前方之路

即将发布的 Second State 虚拟机(SSVM)是为服务端应用程序优化的 WASM。

在区块链领域,Second State 已经走在了世界最前沿,为下一代以太坊兼容的区块链系统提供虚拟机(Ewasm)。用于区块链的 SSVM 原生支持256位整数运算。与其他 Ewasm 实现相比,SSVM 在虚拟机内部拒绝执行结果不确定的操作码,如浮点运算,同时也实现了对 gas 的精确计算,从而大大提高了性能。

在云服务领域,SSVM 优化了 WASM 针对企业的功能,例如程序状态的高效存储,高性能输入输出,多线程支持,以及对硬件加速器的直接支持。 通过与高通公司的合作,SSVM 在高通芯片上运行时,可以直接访问高通芯片的 AI SDK。

服务端 WASM 的发展前景充满了希望。

加入我们,向下一代云架构迈进!