借助 NGINX Unit 在服务器端使用 WebAssembly
原文作者:Liam Crilly of F5
原文链接:借助 NGINX Unit 在服务器端使用 WebAssembly
转载来源:NGINX 中文官网
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
-
HTTP 的“请求-响应”模式与 WebAssembly 沙盒的输入/输出(I/O)字节流完美契合。
-
开发人员能够在不影响运行时性能的情况下尽享高级语言生产效率。
-
NGINX Unit 的请求路由器可帮助通过多个 WebAssembly 模块构建复杂应用。
-
WebAssembly 的启动速度很快,因此同样适用于部署单个微服务和功能,乃至功能齐全的应用。
-
通用可移植性和跨平台兼容性有助于本地开发,而没有复杂的 build 流水线。
-
NGINX Unit 已经提供了 Per-App 隔离,WebAssembly 沙盒有助于更安全地运行不受信任的代码。
NGINX Unit WebAssembly 模块的工作原理
在 NGINX Unit 上运行 WebAssembly 模块
-
type 定义要为此应用加载的语言模块
-
module 指向已编译的 WebAssembly 字节码
-
access 是 Wasmtime 运行时的一项特性,支持应用访问沙盒以外的资源
-
request_handler 、 malloc_handler 和 free_handler 与将 HTTP 上下文传输到 Wasmtime 的 SDK 函数有关(下一节将详细介绍)
{
"applications":{
"helloworld":{
"type":"wasm",
"module":"/path/to/wasm_module.wasm",
"access":{
"filesystem":[
"/tmp",
"/var/tmp"
]
},
"request_handler":"luw_request_handler",
"malloc_handler":"luw_malloc_handler",
"free_handler":"luw_free_handler"
}
}
}
在 WebAssembly 沙盒中查找 HTTP 上下文
试用技术预览版
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn