4 个版本 (破坏性更新)
0.9.0 | 2024 年 5 月 3 日 |
---|---|
0.8.0 | 2023 年 3 月 18 日 |
0.2.0 | 2022 年 3 月 26 日 |
0.1.0 | 2020 年 9 月 13 日 |
在 WebSocket 中排名 119
每月下载 24 次
用于 aquatic
180KB
3.5K SLoC
aquatic_ws:高性能开源 WebTorrent 追踪器
适用于 Linux 5.8 或更高版本的 WebTorrent 追踪器。
功能速览
- 多线程设计,可处理大量流量
- 所有数据都存储在内存中(不需要数据库)
- 支持 IPv4 和 IPv6
- 支持禁止/允许 info 哈希
- Prometheus 指标
- 自动 CI 测试完整文件传输
已知用户
- tracker.webtorrent.dev (
wss://tracker.webtorrent.dev
)
性能
更多详细信息请参阅 此处。
用法
编译
- 使用 rustup 安装 Rust(建议使用最新稳定版)
- 使用您的包管理器安装构建依赖项(例如,
apt-get install cmake build-essential
) - 克隆此 Git 仓库并构建应用程序
git clone https://github.com/greatest-ape/aquatic.git && cd aquatic
# Recommended: tell Rust to enable support for all SIMD extensions present on
# current CPU except for those relating to AVX-512. (If you run a processor
# that doesn't clock down when using AVX-512, you can enable those instructions
# too.)
. ./scripts/env-native-cpu-without-avx-512
cargo build --release -p aquatic_ws
配置
生成配置文件
./target/release/aquatic_ws -p > "aquatic-ws-config.toml"
对文件进行必要的调整。您可能需要调整 address
(监听地址)在 network
部分下的设置。
要使用 TLS 运行,请配置证书和私钥文件。
支持在反向代理后面运行,只要 IPv4 请求代理到 IPv4 请求,IPv6 请求代理到 IPv6 请求。
运行
确保锁定内存限制足够
- 如果您正在使用 systemd 服务文件,请向其中添加
LimitMEMLOCK=65536000
- 否则,请将以下行添加到
/etc/security/limits.conf
,然后注销并重新登录
* hard memlock 65536
* soft memlock 65536
完成后,启动应用程序
./target/release/aquatic_ws -c "aquatic-ws-config.toml"
如果您的服务器指向域名 example.com
,并且您已将跟踪器配置为在端口 3000 上运行,人们现在可以通过将 URL wss://example.com:3000
添加到他们的种子文件或磁力链接来使用它。
负载测试
有一个负载测试应用程序可用。它支持以与跟踪器应用程序类似的方式生成和加载配置文件。
启动跟踪器后,运行负载测试器
. ./scripts/env-native-cpu-without-avx-512 # Optional
cargo run --release -p aquatic_ws_load_test -- --help
详细信息
旨在与 WebTorrent 客户端兼容。注意
- 不跟踪种子下载次数(始终发送 0)。
- 不允许完全抓取,即所有注册的信息哈希。
aquatic_ws
的测试不如 aquatic_udp
全面,但在生产中可能运行良好。
架构概述
版权和许可
版权(c)Joakim Frostegård
根据 Apache 许可证第 2.0 版分发。有关详细信息,请参阅存储库根目录中的 LICENSE
文件。
依赖项
~27–41MB
~760K SLoC