A Tracker which will "chuang" you
A high-performance BitTorrent Tracker implemented in Go. Using Hertz from cloudwego, with observability.
For benchmark, please refer to the Benchmark section.
make install_tool
make update_idl
./build.sh
cd output
./bootstrap.sh
or
docker run -d --name trunker -e ADMIN_KEY=aabbcc -p 8888:8888 gaojianli2333/trunker:latest
- BEP-0003
- BEP-0007 (IPv6 Tracker Extension)
- BEP-0023 (Compact Peer Lists)
- BEP-0024 (External IP)
- BEP-0031 (Failure Retry Extension)
- BEP-0048 (Scrape)
- BEP-0015 (UDP Tracker Protocol)
- LT-Extension (aka. complete,incomplete)
- Switchable Mode (Memory or MySQL)
- Load and store persist from disk
- Blacklist for info_hash and peer_id
- Eventbus support
- Websocket support
- Prometheus based metrics
- RPC mode to support cluster. Powered by Kitex
Trunker provides much config and observability capabilities, if you want to run trunker in production, please see the Wiki.
Trunker has very strong performance. Here's a record of a real peak.
- CPU:
4 Cores AMD EPYC-Milan
- Average response time:
100us
when1267703
torrents and2406393
peers are online. - QPS:
2736
(can be higher, but we don't have such many peers connect to our tracker) - Memory Cost:
2635MB
.