作者
Bhupathy Arumugam Periasamy Bhupathy在Multicoreware担任高级技术主管,在性能优化、定制AI/ML加速器软件栈、Linux和云基础设施等不同领域拥有8年以上的经验。
介绍:
WebAssembly(通常缩写为WASM)是一种低级的二进制格式和虚拟机,旨在由网络浏览器执行。它提供了一种在网络浏览器中运行用JavaScript以外的语言编写的代码的方法,如C、C++、Rust和许多其他语言。WebAssembly代码由用这些其他语言编写的源代码编译而成,可以在沙盒环境中执行,提供了高度的安全性和可移植性。
WASM的历史:
WebAssembly是由几个主要的浏览器供应商,包括Mozilla、Google、Microsoft和Apple联合创建的,目的是提供一种标准化的方式来在网络上运行性能关键的代码。它被设计为快速、紧凑和安全,并可用于各种应用,包括游戏、科学模拟和视频及音频处理。
WebAssembly的主要好处之一是,它提供了一种重用用JavaScript以外的语言编写的现有代码的方法。这使开发者可以利用C和C++等语言的性能优势,而不必用JavaScript从头开始写代码。此外,WebAssembly提供了一种在沙盒环境中运行代码的方法,这有助于防止恶意代码对用户的系统或数据造成伤害。

无服务器计算:
无服务器函数,也被称为函数即服务(FaaS),为创建小型云服务提供了一种直接的手段。为了理解无服务器功能的概念,将其与传统的服务器进行比较是有帮助的。一个网络服务器软件在套接字上监听HTTP请求,解析每个请求,然后处理这些请求。在一个网络服务器的生命周期中,它可能会处理数十万个独立的HTTP请求。然而,典型的HTTP服务器还必须管理SSL连接、系统进程、线程池和并发,以及其他各种较低级别的任务,所有这些都是为了响应HTTP请求而服务。
相比之下,无服务器功能的设计是为了剥离大部分服务器端的复杂性,让开发者只专注于对HTTP请求的响应。不需要管理网络、SSL配置或请求线程池管理。所有这些方面都由平台处理,无服务器功能启动后,响应一个请求,然后关闭。
这种设计方法减少了需要编写的代码量,简化了运行无服务器功能的操作复杂性。更新HTTP或SSL库等维护任务由平台处理,使错误处理、升级和其他任务对开发者来说更容易。鉴于这种对简单性的关注,数以百万计的开发者至少编写了一个无服务器功能,这并不奇怪。亚马逊报告说,他们每个月执行10万亿个无服务器函数。
无服务器计算的痛点:
尽管这种编程范式有很多好处,但无服务器函数的早期迭代还是受到了一些缺点的困扰,包括启动时间慢、打包和部署繁琐以及调试和故障排除困难。这些问题源于在虚拟机上运行无服务器函数,每一种语言的运行时,以及没有针对这种计算方式进行优化的包管理器。
WASM是一种解决方案
然而,事实证明,这些问题的解决方案就隐藏在众目睽睽之下–浏览器中。通过利用WebAssembly(Wasm)技术,我们可以改善无服务器函数的状态,使其速度快得惊人,超安全,并能隐藏服务器的细节。通过避免让用户选择操作系统或CPU类型,我们让开发者专注于无服务器的决策,而不是服务器的决策。此外,定义明确的软件包格式中的较小二进制文件简化了发布过程。

WASM的设计使其非常适合于无服务器功能。它的特点–包括快速启动时间、跨架构和跨操作系统的兼容性、紧凑的二进制文件和安全的沙盒–与无服务器功能平台所需的特征一致。有了在Wasm上运行的无服务器功能平台,开发者可以轻松地构建和部署各种应用,包括高度响应的HTTP应用,并充满信心。这也正是Fermyon开发的开源Spin框架的目标。
结论:
随着技术的发展,它们的应用往往超出了其最初的范围。Wasm目前正在经历这样的转变,因为新的用途被发现,超出了网络浏览器的范畴。无服务器功能已经被证明是成功的,但要将该技术提升到一个新的水平,需要更快、更强大的基础。Wasm正是满足这些需求的技术。