在 2022 年KubeCon/CloudNativeCon大会上,Fermyon 发布了其面向 WebAssembly 应用程序的微服务平台Fermyon Cloud,目前已进入公测阶段。
Fermyon Cloud 的核心愿景是 WebAssembly 有潜力实现无服务器的承诺,克服在容器和虚拟机方面存在的限制。Fermyon 首席执行官 Matt Butcher认为,WebAssembly 在两个方面优于虚拟机和容器——启动时间和跨平台可移植性。
理想情况下,所有微服务都应该是无状态的,并使用有状态服务来存储它们的信息。因为有了这些特性,你应该能够尽可能快地启动和停止它们。想象一下,现在你可以立即启动应用程序,并在它不再处理流量时立即关闭它,而不是花几分钟来启动一个虚拟机或几秒钟或几十秒来启动一个容器。这就是我们所追求的 WebAssembly 模型。
根据 Butcher 的说法,你可以在不到一毫秒的时间内执行应用程序的第一条指令,有时甚至可以达到微秒级。这将使构建可伸缩的应用程序变得更加容易,当请求达到峰值时,应用程序可以快速伸缩,当请求下降到零且没有流量时,应用程序不会浪费 CPU 或内存。相反,在使用容器或虚拟机时,一般的冷引导方式是在处理请求后将实例空闲一段时间,以防有新的请求流入。
WebAssembly 的另一个好处是跨平台可移植性,这种可移植性一直延伸到可执行文件级别。
我感兴趣的是能够让相同的已编译的工件、字节码在各种操作系统和 CPU 架构之间运行。在容器世界,容器镜像被绑定到一种架构、一种 CPU 架构或一种操作系统上,你需要使用多架构镜像才能让相同的应用程序运行在多个环境中。现在,你可以让相同的 WebAssembly 模块在 ARM 架构的 Linux 上运行,在 AMD 架构的 Windows 上运行,在云端的某个位置运行,你不需要关心平台的架构问题,这一点很吸引人。
可移植性也扩展到了语言层面,目前许多编程语言都支持将 WebAssembly 作为编译目标。在 Fermyon 平台上使用编程语言的主要要求是支持WASI。这意味着你可以使用 Python、C#和其他.NET 语言、C/C++、Go、Rust 和其他语言,但 Java、JavaScript/TypeScript、Scala 等语言除外。
Dermyon Cloud 基于Spin(Fermyon 开源的构建云微服务的框架),并利用了许多其他开源项目,包括用于管理发布的Bindle、用于编排的Nomad等。Fermyon Cloud 并不是只使用 Spin 来执行应用程序,而是使用了一种高度可伸缩的执行环境,他们说这种环境能够在一个包含 5 个工作节点的 Nomad 集群上运行数千个应用程序。
Butcher 表示,在将 WebAssembly 和基于容器的微服务叠加起来的同时,我们不能认为前者就是对后者的取代。相反,他认为这是技术上互补,在某些情况下将与容器和虚拟机一起运行。
并不是说虚拟机被容器取代了,然后容器也将被 WebAssembly 取代。每一次我们迈出一个增量的步骤,它们都是累加起来的。我们加了一个东西,但没有减掉任何东西。因此,虚拟机现在是一个比以往任何时候都强大的市场,管理虚拟机的工具也在不断改进。容器也是如此,我认为 WebAssembly 将是下一项补充性的技术。
正如前面提到的,Fermyon Cloud 现在正在公测中,唯一的限制是每个开发者最多可以启动 5 个实例。如果你希望在自己的平台上托管 Spin 应用程序,可以在任意主要的云供应商(包括 Azure、AWS、DigitalOcean 和谷歌)上使用Fermyon Installer。
原文链接:
https://www.infoq.com/news/2022/11/Fermyon-cloud-webassembly/
相关阅读:
评论