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

Apache-2.0

180KB
3.5K SLoC

aquatic_ws:高性能开源 WebTorrent 追踪器

CI

适用于 Linux 5.8 或更高版本的 WebTorrent 追踪器。

功能速览

  • 多线程设计,可处理大量流量
  • 所有数据都存储在内存中(不需要数据库)
  • 支持 IPv4 和 IPv6
  • 支持禁止/允许 info 哈希
  • Prometheus 指标
  • 自动 CI 测试完整文件传输

已知用户

性能

WebTorrent tracker throughput comparison

更多详细信息请参阅 此处

用法

编译

  • 使用 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 全面,但在生产中可能运行良好。

架构概述

Architectural overview of aquatic

版权(c)Joakim Frostegård

根据 Apache 许可证第 2.0 版分发。有关详细信息,请参阅存储库根目录中的 LICENSE 文件。

依赖项

~27–41MB
~760K SLoC