13 个版本
0.0.13 | 2024 年 2 月 13 日 |
---|---|
0.0.12 | 2024 年 2 月 13 日 |
#1313 在 网络编程
每月 106 次下载
160KB
3K SLoC
wasmio
为 Wasmer 提供的 S3 后端服务器
▄ ▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄▄ ▄▄▄▄▄▄▄
█ █ ▄ █ █ █ █ █▄█ █ █ █
█ ██ ██ █ ▄ █ ▄▄▄▄▄█ █ █ ▄ █
█ █ █▄█ █ █▄▄▄▄▄█ █ █ █ █ █
█ █ █▄▄▄▄▄ █ █ █ █▄█ █
█ ▄ █ ▄ █▄▄▄▄▄█ █ ██▄██ █ █ █
█▄▄█ █▄▄█▄█ █▄▄█▄▄▄▄▄▄▄█▄█ █▄█▄▄▄█▄▄▄▄▄▄▄█
想法
Wasmer 允许使用挂载卷进行文件存储,通过这种后端,我们将能够实现基于存储的应用程序。
我们将实现一个由 Wasmer 卷支持的 S3 服务器。
开发
您需要安装 wasmer 和 cargo-wasix。
注意:如果您在 Mac OS 上安装
wasmer
,则需要将其添加到.bash_profile
中,因为它似乎将其添加到.bashrc
中。
export WASMER_DIR="/Users/wizard/.wasmer"
[ -s "$WASMER_DIR/wasmer.sh" ] && source "$WASMER_DIR/wasmer.sh"
要本地运行解决方案,可以使用以下命令
标准
RUST_LOG=info CONFIG_FILE_LOCATION=./public/config.local.toml cargo run --package wasmio RUST_LOG=info
Wasmer
cargo wasix build --package wasmio
wasmer run . \
--net \
--enable-threads \
--env CONFIG_FILE_LOCATION=/public/config.local.toml \
--env RUST_LOG=info \
--mapdir /public:$(pwd)/public
性能
目前,我们使用简单的 JSON 存储数据,这对基于文件的存储来说效率不高。这只是对整个存储和 wasmer 的一次实验。
为了获得更好的性能,存储层应该重新设计以更好地使用文件 API(例如,使用 Seek,更好的数据存储格式,我们不需要 JSON)。
基准测试
(在此处集成 bencher)。
端到端测试
(在此处集成 bencher)。
依赖项
~17–31MB
~432K SLoC