做后端开发的人,基本都踩过这个坑:
- 用户访问第一个请求,容器冷启动等了 500ms,用户已经走了
- 一个简单脚本,Docker 镜像 200MB,Registry 拉取又花了 30 秒
- 想跑个第三方插件,担心它读你服务器上的敏感文件,只能上虚拟机硬隔离
问题的本质不是代码写得慢,是容器这套虚拟化太重了。
Wasmer 就是来解决这个问题的。
是什么
Wasmer 是开源 WebAssembly 通用运行时,Rust 编写。核心思路:把任何语言编译成 .wasm,一次构建,在服务器/边缘/浏览器/IoT 上秒级运行,冷启动 <10ms,模块体积 1-20MB。
- 20.8k Stars、979 Forks
- 500 万+ 下载量,活跃维护
- MIT 协议
image.png这是 Wasmer 在终端里直接运行 Python 的截图——不需要本地装 Python,一个 wasmer run 就启动了一个沙箱化的 Python 环境。
能做什么
多编译器后端
- Singlepass:编译最快(~0.5ms),适合 Serverless 短生命周期函数
- Cranelift:平衡编译速度和运行时性能,通用场景
- LLVM:运行时性能最优(接近原生 2-3% 开销),适合长时计算
- V8 / Interpreter:iOS / 移动端
image.pngWASI / WASIX 系统接口
- WASI Preview 1 全支持,WASI Preview 2 实验性支持
- WASIX 扩展:完整 POSIX 虚拟化套接字、异步线程、子进程、文件系统
- 支持多线程、多进程、原始套接字(libcurl 直接跑)
Wasmer Edge 云平台
- 全球边缘节点部署(含东京、香港、圣保罗、悉尼)
- 自动扩缩容、版本回滚、自定义域名 + 自动 SSL
- 支持 WebSocket、SSH 远程会话、TCP/UDP(即将上线)
- 定价低于 Cloudflare Workers 和 AWS Lambda
多语言嵌入 SDK
- Python / Go / Ruby / PHP / C / Rust / JS 等宿主语言直接嵌入 Wasm 运行时
- 创建插件系统:用户用任何语言写插件,宿主应用安全沙箱执行
实际场景
把 Python 跑在边缘,无需改代码
Wasmer Edge 支持原生 numpy、pandas、uvicorn、sqlalchemy。ASGI/WSGI 框架直接部署,WebSocket 原生支持,多线程 multiprocessing 可用。
对比 Cloudflare Workers(单线程、无 WebSocket、需 patch)和 AWS Lambda(冷启动慢、按实例隔离),Wasmer Edge 的并发模型是"流体多线程"——多个请求共享一个实例,资源利用率更高。
image.png这是 Wasmer Python 的 Pystone 性能对比:latest 版本接近原生 Python 3 性能。
给应用加安全插件系统
用 Wasmer SDK 嵌入你的主程序,第三方插件编译成 .wasm 运行。Wasm 的线性内存沙箱天然隔离——插件无法越界访问主机内存、文件系统、网络,除非显式授权。比 Docker 轻量,比进程隔离更细粒度。
替代容器做 Serverless
一个 .wasm 模块 2-15MB,冷启动 5-10ms,内存占用 5-30MB。对比 Docker 镜像 100MB-2GB、冷启动 300-800ms、内存 50MB+,Wasmer 在边缘计算和事件驱动架构里有数量级优势。
上手:让 AI Agent 帮你装
直接复制给 Claude Code / Cursor:
用 Wasmer CLI 部署一个 Python HTTP 服务到 Wasmer Edge,
参考 https://github.com/wasmerio/wasmer
要求:
1. 安装 wasmer CLI:curl https://get.wasmer.io -sSfL | sh
2. 用 wasmer run python/python 启动 Python 沙箱,验证 numpy 可用
3. 创建一个简单的 Flask/FastAPI 应用,打包成 .wasm 部署到 wasmer.app
4. 验证部署后的 URL 能正常返回 HTTP 响应
手动 3 步:
# 1. 安装 CLI
curl https://get.wasmer.io -sSfL | sh
# 2. 运行 Python(无需本地安装 Python)
wasmer run python/python -- -c "import numpy; print(numpy.__version__)"
# 3. 部署到边缘
wasmer deploy --name my-app
# 获得 https://my-app.wasmer.app
5 行核心代码(Python 嵌入 Wasm):
from wasmer import engine, Store, Module, Instance
from wasmer_compiler_cranelift import Compiler
store = Store(engine.JIT(Compiler))
module = Module(store, open('plugin.wasm', 'rb').read())
instance = Instance(module, {})
result = instance.exports.calculate(42)
print(result)
| 后端 | 编译速度 | 运行时性能 | 适用场景 |
|---|
| Singlepass | ~0.5ms | 良好 | Serverless、短生命周期 |
| Cranelift | ~2ms | 更好 | 通用应用 |
| LLVM | ~50ms | 最优 | 长时计算、AI 推理 |
竞品对比
| 维度 | Wasmer | Wasmtime | WasmEdge | Docker |
|---|
| 冷启动 | ~8ms | ~5ms | ~15ms(AOT <1ms) | 300-800ms |
| 模块体积 | 2-15MB | 2-15MB | 1-10MB | 100MB-2GB |
| 内存占用 | ~25MB | ~15MB | ~20MB | 50MB+ |
| 编译器后端 | Singlepass/Cranelift/LLVM/V8 | Cranelift/Winch | AOT/JIT/Interpreter | N/A |
| WASI Preview 2 | 🟡 实验性 | ✅ 原生 | ✅ | N/A |
| Component Model | 🔜 | ✅ 原生 | ⚠️ 实验性 | N/A |
| 多语言 SDK | Python/Go/Ruby/PHP/C/JS/Rust | C/Rust | Python/Go/JS/Rust | N/A |
| 边缘云平台 | ✅ Wasmer Edge | ❌ | ✅ WasmEdge Cloud | ❌ |
| WASI-NN (AI) | ❌ | ❌ | ✅ 原生 | 需额外安装 |
| 协议 | MIT | Apache-2.0 | Apache-2.0 | - |
没有工具在每个维度都是最深的——Wasmtime 是 WASI 标准参考实现,WasmEdge 的 AOT 冷启动和 AI 推理更强,Docker 生态最成熟。Wasmer 胜在覆盖面:多编译器后端灵活切换、最丰富的多语言 SDK、WASIX 扩展 POSIX 能力、自带边缘云平台,一套工具链覆盖从嵌入式到 Serverless 的全场景。
注意点
- WASI Preview 2 还在追赶: 需要 Component Model 原生支持的话,目前 Wasmtime 更成熟
- AI 推理不是强项: WASI-NN 尚未支持,需要 AI 推理优先选 WasmEdge
- 边缘云还在扩张: Wasmer Edge 节点覆盖不如 Cloudflare Workers 全球密集,但增长很快
总结
Wasmer 不是容器替代品,是轻量级沙箱运行时的基础设施。做 Serverless、需要给应用加安全插件系统、想把 Python/Node 跑在边缘而不改代码的,值得试一试。
GitHub:https://github.com/wasmerio/wasmer