插件架构
PRX 插件系统构建在 WASM 运行时之上,为第三方代码提供安全、可移植的执行环境。本页描述技术架构。
运行时
PRX 使用 Wasmtime 运行时执行 WASM 插件。每个插件实例在自己的 WASM Store 中运行,拥有隔离的线性内存。
┌──────────────────────────────┐
│ PRX 宿主 │
│ │
│ ┌────────────────────────┐ │
│ │ WASM 运行时 │ │
│ │ ┌──────┐ ┌──────┐ │ │
│ │ │插件 │ │插件 │ │ │
│ │ │ A │ │ B │ │ │
│ │ └──┬───┘ └──┬───┘ │ │
│ │ │ │ │ │
│ │ 宿主函数 API │ │
│ └────────────────────────┘ │
└──────────────────────────────┘宿主-客户边界
插件通过一组定义好的宿主函数与宿主通信。边界强制执行:
- 类型安全 -- 所有函数参数都经过验证
- 资源限制 -- 内存和 CPU 使用量有上限
- 权限检查 -- 每个宿主函数调用都根据插件的权限清单进行授权
内存模型
每个插件拥有自己的线性内存空间(默认 64 MB)。宿主和客户之间通过共享内存缓冲区进行显式序列化的数据交换。
插件生命周期
- 加载 -- WASM 二进制被加载和验证
- 初始化 -- 调用插件的
init()函数并传入配置 - 就绪 -- 插件注册其能力(工具、渠道等)
- 执行 -- 宿主按需调用插件函数
- 关闭 -- 调用插件的
shutdown()函数进行清理