
作者|ChrisAniszczyk,VivianHu,MichaelYuan策划|蔡芳芳随着Wasm在云原生项目、产品和服务中的采用,CNCF与Wasm社区合作创建了一个Wasm生态全景图,以更好地理......
作者|ChrisAniszczyk,VivianHu,MichaelYuan
策划|蔡芳芳
随着Wasm在云原生项目、产品和服务中的采用,CNCF与Wasm社区合作创建了一个Wasm生态全景图,以更好地理解Wasm生态的范围。正如最初的云原生全景图帮助勾画了围绕云原生技术的大量生态,我们相信随着生态的发展和增长,Wasm也需要同样的全景图。
Wasm全景图第一版在WasmCon会议上发布,包括11个类别和120个项目或产品,代表总经济价值594亿美元。Wasm全景图分为两大领域:Dev(应用程序开发)和Ops(应用程序部署)。
Wasm全景图链接:
应用程序开发Wasm应用程序开发需要自己的编程语言和相关工具生态,例如编译器、框架、库、工具和运行时。
编程语言当开发者创建应用程序时,他们从选择一种编程语言开始!Wasm的特点之一是它能够运行用各种不同编程语言编写的应用程序。然而,这并不意味着所有编程语言都是平等的。
事实上,Wasm全景图中有4类编程语言。
编译语言一等公民是可以直接编译为Wasm字节码并在Wasm运行时运行而无需任何依赖的语言。C、C++、Zig和Rust都属于这一组。他们生产最快和最小的Wasm应用程序。
让我们以Rust为例。安装Rust语言后,你所需要做的就是添加wasm32-wasi目标。
托管(Managed)语言托管语言仍然是编译语言。但编译器输出需要“托管运行时”才能正常运行。托管运行时最常见的任务是垃圾收集(或GC)。
对于Kotlin和Dart这样的语言,WasmGC功能就足够了。WasmEdge、Wasmtime和v8等领先的Wasm运行时最近添加了WasmGC支持。
对于Go来说,编译器将必要的运行时二进制文件嵌入到编译后的Wasm字节码中。这增加了Wasm应用程序的大小,但仍然提供了良好的开发者体验。
对于复杂的托管语言,例如Java和.Net(例如C1是在容器管理堆栈的基础上使用OCI运行时,例如crun和youki。crun根据镜像的目标操作系统和CPU平台检测OCI镜像是wasm还是Linux。如果镜像的目标是wasi/wasm,crun将绕过Linux容器设置过程,只使用WasmEdge来运行它。基于crun,我们可以获得整个Kubernetes堆栈来运行Wasm镜像,包括CRI-O(CNCF项目)、containerd(CNCF项目)、Podman、kind、K8s(CNCF项目)、OpenYurt(CNCF项目)、SuperEdge(CNCF项目)、KubeEdge(CNCF项目)。
方法#2是使用containerd-shim(例如runwasi)在containerd中运行Wasm应用程序。当containerd接收到镜像时,它会检查镜像的目标平台,如果镜像是wasi/wasm,它会路由到runwasi执行,如果镜像是x86或arm,它会路由到runc。
在Kubernetes的基础上,我们还介绍了一些新兴工具来帮助管理生产Wasm工作负载。
Kuasar是另一个支持多种类型沙箱的容器运行时,包括microVM、Linux容器、应用程序内核和WebAssembly运行时。
Kwasm是一个KubernetesOperator,它为你的Kubernetes节点添加了WebAssembly支持。它可与基于Ubuntu/Debian和Containerd的本地和托管云K8s发行版配合使用,
container2wasm是一个容器到wasm镜像转换器,可以在WASM上运行容器。
托管(Hosted)平台如果你不想麻烦地运行自己的服务器和Kubernetes集群,那么托管平台是将Wasm应用程序部署和扩展为服务的绝佳选择。
是一个用于AI原生工作流程自动化的serverlessWasm平台。
FermyonCloud是部署和管理使用Spin框架编写的serverlessWasm函数。
Cosmonic是部署在WasmCloud上的基于Wasm的Actor服务。
CloudflareWorkers是Cloudflare边缘网络上由v8支持的Wasm和JavaScriptserverless函数运行时。
Fastly@EdgeFunction是部署在Fastly边缘网络上的serverlessWasm函数平台。
AKS:支持在AzureKubernetesService(AKS)中创建WASI节点池以运行WebAssembly(WASM)工作负载
Taubyte是一个用于运行应用程序的云原生平台,尤其是Wasm应用程序。
GolemCloud是一个计算平台,允许开发者在Wasm中构建和部署长期运行、有状态的serverless工作线程。
去中心化平台基于区块链的智能合约平台是去中心化的云计算网络。你的云应用程序(即智能合约)不是由中心Operator运行所有工作负载,而是由网络中的节点执行。由于智能合约不受信任并且必须非常频繁地执行(每台计算机每秒数百次),因此Wasm是该应用场景的理想执行引擎。事实上,几乎所有领先的智能合约区块链网络都采用了Wasm。
Polkadot
NEAR
Dfinity
GEAR
Filecoin
Ripple
EOS
CosmWasm
QuaiNetwork
调试和可观测性WASIlogging是用于发出日志消息的Wasm规范。它得到领先的Wasm运行时(例如wasmtime和WasmEdge)的支持。
Modsurfer为运营和开发团队提供了第一个记录系统+诊断应用程序,用于搜索、浏览、验证、审核和调查Wasm二进制文件。
ArtifactsArtifactsrepo是全景图中的重要元素。它们提供集中且始终可用的位置来存储、发现、验证、下载、跟踪多个已发布版本的Wasm包。它们不仅是便利的工具,而且对于软件供应链安全也至关重要。
DockerHub是创建、管理和交付团队容器应用程序的地方。如果你在DockerHub上上传纯Wasm镜像,则镜像的操作系统/架构将被标记为wasi/wasm。
Harbor是一个开源的可信云原生registry项目,用于存储、签名和扫描内容。它支持Wasm工件。
Warg是一个WebAssembly组件registry。
wapm是WebAssembly的包管理器。
是rust的crateregistry,它是最常用的Wasm语言。
帮助我们构建Wasm全景图Wasm全景图是社区的努力,随着Wasm采用的兴起,Wasm全景图也在快速发展。我们打算随时更新最新进展。然而,我们只有在整个Wasm社区的帮助下才能做到这一点。
如果有任何想要添加或更新的内容,请提交PR!可以参考此PR添加你的项目名称、logo、网站、GitHubrepo链接和crunchbase。
Wasm全景图提交PR参考链接: