envoy源码分析(十三)-- WASM
一,概述
envoy语境下的WASM是envoy运行第三方代码的一种方式,有两个特性:
1 插件式
2 沙箱式
其借用WASM机制,该机制是浏览器运行插件的方式,全称 webassembly
下面是全文摘要的思维导图

二,envoy-wasm
为了实现上述功能,envoy支持一种extension,叫envoy-wasm, 特点:
1 每worker独立的沙箱。所有listener共享相同的沙箱。
2 envoy设计了三种概念,context, VM, plugin, 可以在配置结构与代码中体系。
3 有四个hook点 http-filter, L4-filter, stats Sink, accesslog, 以及 backend service
4 envoy extension基于 工程 prox-wasm 实现。
相关文档:
https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/wasm.html
envoy-wasm配置示例
https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/wasm_filter.html
三,proxy-wasm
proxy-wasm 工程也是envoy延伸的,设计初衷与由来,可以见下面的文档,非常推荐读
https://github.com/proxy-wasm/spec/blob/main/docs/WebAssembly-in-Envoy.md
该工程分两类代码,一类是跑沙箱的host代码,一类是跑业务的SDK代码。
如前文的图所示。
https://github.com/proxy-wasm/proxy-wasm-cpp-host
https://github.com/proxy-wasm/proxy-wasm-cpp-sdk
其中 proxy-wasm-cpp-host里封装了沙箱软件,一个5个。
四,WASM(sandbox)
AI来的:
各个引擎的官方信息和特点:
1. V8 (Google)
- 官网: https://v8.dev/
- 特点: Google Chrome 的 JavaScript 引擎,WebAssembly 支持非常成熟
- 优势: 性能优秀,生态完善,广泛应用于 Chrome 和 Node.js
2. Wasmtime (Bytecode Alliance)
- 官网: https://wasmtime.dev/
- 特点: 由 Mozilla、Fastly、Intel 等公司组成的 Bytecode Alliance 开发
- 优势: 专注于服务器端 WebAssembly,安全性高,性能优秀
3. WasmEdge (CNCF 项目)
- 官网: https://wasmedge.org/
- 特点: 云原生计算基金会 (CNCF) 项目,专注于边缘计算和云原生场景
- 优势: 轻量级,启动速度快,支持多种编程语言
4. WAMR (Bytecode Alliance)
- 官网: https://github.com/bytecodealliance/wasm-micro-runtime
- 特点: 专为资源受限设备设计的微型运行时
- 优势: 极小的二进制大小,低内存占用,适合嵌入式和 IoT 设备
5. Null VM
- 特点: 这不是一个真正的 WebAssembly 引擎,而是一个特殊的"空"运行时
- 用途: 用于开发和测试,允许直接在主机环境中运行插件代码
浙公网安备 33010602011771号