envoy源码分析(十三)-- WASM

一,概述

envoy语境下的WASM是envoy运行第三方代码的一种方式,有两个特性:

1 插件式

2 沙箱式

其借用WASM机制,该机制是浏览器运行插件的方式,全称 webassembly

 

下面是全文摘要的思维导图

proxy-wasm-mindmap

 

 

二,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)

5. Null VM

  • 特点: 这不是一个真正的 WebAssembly 引擎,而是一个特殊的"空"运行时
  • 用途: 用于开发和测试,允许直接在主机环境中运行插件代码

posted on 2026-02-09 14:26  toong  阅读(2)  评论(0)    收藏  举报