Envoy 扩展机制全景对比
Envoy 作为云原生代理,支持多种扩展与集成机制,满足不同场景下的功能增强需求。常见机制包括:
- 自定义 C++ 扩展
- Lua 脚本
- Wasm 插件
- 动态模块(Dynamic Module)
- External Processing(ext_proc)
- External Authorization(ext_authz)
机制分类与原理
机制类型 | 执行环境 | 主要语言 | 加载方式 | 性能 | 安全性 | 典型场景 |
---|---|---|---|---|---|---|
C++ 扩展 | 进程内 | C++ | 静态编译 | 极高 | 需完全信任 | 性能极致、核心路径 |
Lua 脚本 | 进程内 | Lua | 配置内联 | 中等 | 有限隔离 | 轻量逻辑、头部操作 |
Wasm | 进程内 | Rust/Go | 动态加载 | 中等 | 沙箱隔离 | 跨语言、原型开发 |
Dynamic Module | 进程内 | Rust/Go/C++ | 动态加载 | 高 | 需完全信任 | 性能敏感扩展 |
ext_proc | 进程外 | 任意 | gRPC/REST | 低 | 进程隔离 | DLP、安全扫描 |
ext_authz | 进程外 | 任意 | gRPC/REST | 高 | 进程隔离 | 认证鉴权 |
优缺点对比
- C++ 扩展:极致性能,维护成本高,升级需自定义构建。
- Lua 脚本:易用灵活,适合轻量场景,隔离性有限。
- Wasm:跨语言、沙箱安全,生态尚不成熟,调试复杂。
- Dynamic Module:接近原生性能,开发体验好(Rust),需严格版本匹配,无沙箱。
- ext_proc/ext_authz:进程外集成,安全隔离好,适合解耦控制逻辑,但有网络延迟。
选型建议
- 性能极致、核心路径:C++ 扩展或Dynamic Module
- 快速开发、轻量逻辑:Lua 脚本
- 跨语言、安全隔离:Wasm(需评估生态成熟度)
- 认证、策略、外部处理:ext_proc/ext_authz
工程实践建议:Dynamic Module 适合企业自控场景,兼具高性能与开发友好性,未来有望替代大部分 Wasm 使用场景。
机制演进趋势
Dynamic Module 作为新兴机制,结合了 C++ 性能与现代 SDK 体验,推荐关注其发展。
下一节将详细介绍 Dynamic Module 的原理与工程实践。