#s3 #amazon-s3 #wasi #wasm

bin+lib wasmio

WasmIO,加强版的 S3 实现

13 个版本

0.0.13 2024 年 2 月 13 日
0.0.12 2024 年 2 月 13 日

#1313网络编程

Download history 24/week @ 2024-03-10 2/week @ 2024-03-17 41/week @ 2024-03-31 168/week @ 2024-04-21 7/week @ 2024-04-28

每月 106 次下载

MIT/Apache

160KB
3K SLoC

wasmio

为 Wasmer 提供的 S3 后端服务器

 ▄     ▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄   ▄▄ ▄▄▄ ▄▄▄▄▄▄▄ 
█ █ ▄ █ █      █       █  █▄█  █   █       █
█ ██ ██ █  ▄   █  ▄▄▄▄▄█       █   █   ▄   █
█       █ █▄█  █ █▄▄▄▄▄█       █   █  █ █  █
█       █      █▄▄▄▄▄  █       █   █  █▄█  █
█   ▄   █  ▄   █▄▄▄▄▄█ █ ██▄██ █   █       █
█▄▄█ █▄▄█▄█ █▄▄█▄▄▄▄▄▄▄█▄█   █▄█▄▄▄█▄▄▄▄▄▄▄█

release Crates.io version dependency status PRs Welcome

想法

Wasmer 允许使用挂载卷进行文件存储,通过这种后端,我们将能够实现基于存储的应用程序。

我们将实现一个由 Wasmer 卷支持的 S3 服务器。

开发

您需要安装 wasmercargo-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