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日 |
#1590 in 网络编程
每月91次 下载
在 aquatic 中使用
180KB
3.5K SLoC
aquatic_http: 高性能开放HTTP BitTorrent跟踪器
适用于Linux 5.8或更高版本的开放HTTP BitTorrent跟踪器。
快速查看特性
- 多线程设计,用于处理大量流量
- 所有数据存储在内存中(无需数据库)
- 支持IPv4和IPv6
- 支持禁止/允许info散列
- Prometheus度量
- 自动CI测试完整文件传输
性能
更多基准详情请参阅 此处。
用法
编译
- 使用 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_http
配置
生成配置文件
./target/release/aquatic_http -p > "aquatic-http-config.toml"
对文件进行必要的调整。你可能会想要调整 address
(监听地址)在 network
部分下。
要使用TLS运行,请配置证书和私钥文件。
支持在反向代理后面运行。请参阅配置文件以获取详细信息。
运行
确保锁定内存限制足够
- 如果你使用的是systemd服务文件,请向其中添加
LimitMEMLOCK=65536000
- 否则,请将以下行添加到
/etc/security/limits.conf
,然后注销并重新登录
* hard memlock 65536
* soft memlock 65536
完成后,启动应用程序
./target/release/aquatic_http -c "aquatic-http-config.toml"
如果你的服务器指向域名 example.com
并且你已将跟踪器配置为在端口3000上运行,现在人们可以通过将URL https://example.com:3000/announce
添加到他们的种子文件或磁力链接来使用它。
负载测试
提供了一种负载测试应用程序。它支持以与跟踪应用程序类似的方式生成和加载配置文件。
启动跟踪器后,运行负载测试器
. ./scripts/env-native-cpu-without-avx-512 # Optional
cargo run --release -p aquatic_http_load_test -- --help
详细信息
实现
- BEP 003:HTTP BitTorrent协议(更多详情)。异常
- 不跟踪种子下载次数(始终发送0)
- 只支持紧凑响应
- BEP 023:紧凑HTTP响应
- BEP 007:IPv6支持
- BEP 048:HTTP刮擦支持。注意
- 不允许完整的刮擦,即所有注册的info散列
aquatic_http
的测试没有 aquatic_udp
那么多,但在生产中可能运行良好。
架构概述
版权和许可
版权(c)Joakim Frostegård
根据Apache许可证第2.0版分发。有关详细信息,请参阅存储库根目录中的 LICENSE
文件。
依赖项
~21–33MB
~633K SLoC