









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

为了实现上述功能,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
https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/wasm_filter.html
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个。
AI来的:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。