云原生 WebAssembly
如果无法正常显示,请先停止浏览器的去广告插件。
1. 第
十
六
届
D
论
2
坛
前
端
技
术
云原生 WebAssembly
Michael Yuan
https://github.com/WasmEdge/WasmEdge
2. WebAssembly:全栈的轻量级容器
云原生 WebAssembly
WebAssembly 生态的创新
目录
3. WebAssembly:全栈的轻量级容器
4. WebAssembly 的迁移历史
作为浏览器沙盒被提出,目的是增加 JavaScript 的性能
2019年,被 W3C 认证为浏览器的第四大语言
同年,WebAssembly System Interface 提出,赋予了 WebAssembly 访问系统的功能
服务端的 WebAssembly 走在了前沿
• Bytecode Alliance 成立
• CNCF 接收了三个 WebAssembly 项目
5. WebAssembly vs Docker
WebAssembly 能否取代 Docker?
查看完整对比
https://wasmedge.org/wasm_linux_container/
6. WebAssembly vs Docker
WebAssembly 与 Docker 的相似之处
• runtime 隔离
• 安全
• 资源管理
• 可移植
• 容易部署
查看完整对比
https://wasmedge.org/wasm_linux_container/
7. WebAssembly vs Docker
WebAssembly 更快更轻
• 可移植
• 容易部署
A Lightweight Design for High-
performance Serverless Computing, IEEE
Software, Jan 2021.
https://arxiv.org/abs/2010.07115
查看完整对比
https://wasmedge.org/wasm_linux_container/
8. WebAssembly vs Docker
WebAssembly 比 Docker 更抽象
• Hypervisor VM 和 microVM
• 模拟一个计算机
• Firecracker
• 应用容器
• 模拟一个操作系统
• docker
• 高级语言 VM
• 模拟一个进程
• JVM、WebAssembly
9. WebAssembly vs Docker
WebAssembly 会与 Docker Side by Side
运行
查看完整对比
https://wasmedge.org/wasm_linux_container/
10. WasmEdge
CNCF 沙箱项目
为云原生和边缘优化的 WebAssembly Runtime
https://github.com/WasmEdge/WasmEdge
11. 云原生 WebAssembly
12. 与现有云原生生态的集成合
crun 支持 WasmEdge 作为容器 Runtime
•利用 CRI-O 和 k8s 可扩展架构
•在 CRI-O 中与 runc 并排运行
•在 k8s 中与 crun 并排运行
•配置 k8s 和 CRI-O 将 wasm 文件调度到 crun
•使用 Docker Hub 存储 Wasm 文件
•通过 cgroupfs 和 systemd 进行资源管理
https://wasmedge.org/book/en/kubernetes.html
13. 与现有云原生生态的集成
https://wasmedge.org/book/en/kubernetes.html
14. 与 Service Mesh 的集成
Sidecar 微服务
• 通过 WasmEdge 的 language SDK 将
WasmEdge 程序嵌入到 sidecar 中
• 直接使用容器工具管理 WebAssembly 微服务。
https://wasmedge.org/book/en/frameworks/mesh/dapr.html
WasmEdge + Dapr
15. 与 Service Mesh 的集成
API Proxy 的扩展
• 使用 WebAssembly 而不是 Lua 来管理和重
定向 API 请求
• 标准:Proxy wasm 规范
• WasmEdge 支持 Proxy Wasm 规范
16. 与 FaaS/Serverless 的集成
公有云里的 Serverless WebAssembly
• 在 Docker 里运行 Wasm,不是最好的做法
• 但依然有下面的好处:
• 可移植
• runtime 隔离
• 易于部署和管理
• 标准的 Tensorflow Rust SDK
https://wasmedge.org/book/en/frameworks/serverless.html
17. 与 FaaS/Serverless 的集成
由 Pure WebAssembly 驱动的 Serverless
• 轻量级,没有冷启动
• 资源消耗小
• Runtime 隔离
18. WebAssembly 生态的创新
19. 在 WasmEdge 里运行 JavaScript
https://wasmedge.org/book/en/dev/js.html
20. 在 WasmEdge 里运行 JavaScript
• 支持 ES6 module 和 std API
• 用 Rust 实现 JS API
• 将本地 C 共享库导出为 JS 函数
source code: https://github.com/second-state/wasmedge-quickjs
https://wasmedge.org/book/en/dev/js.html
21. WASI Socket
• 官方的 Socket 仍然是争论不休的状态
• 有了 wasmedge_wasi_socket ,就可以用 Rust 编写 networking 应用,并编译成 Wasm 字节码
source code: https://github.com/second-state/wasmedge_wasi_socket
Rust: https://wasmedge.org/book/en/dev/rust/networking.html
JavaScript: https://wasmedge.org/book/en/dev/js/networking.html
22. 实时操作系统上的 WasmEdge
• 边缘上的容器
• 更适用于资源受限的边缘设备。
• 通过 WebAssembly 扩大 seL4 的开发者社区
https://github.com/second-state/wasmedge-seL4
https://wasmedge.org/book/en/os/sel4.html
23. 欢迎大家关注 WasmEdge
https://wasmedge.org/book/en/
https://github.com/WasmEdge/WasmEdge
入群交流:CNCF Slack # WasmEdge
24. Thanks