BT9G LABS / DHT Deep Dive #13
Seeders и Leechers: что означают цифры и как их измеряют
Определения Seeder/Leecher, Tracker scrape, ограничения DHT и причины, по которым глобальный размер Swarm трудно измерить точно.
BT9G Labs / DHT Deep Dive #13. Разделяем протокольные понятия, наблюдаемые Peer и продуктовые счетчики, чтобы не выдавать оценку за точный мировой факт.
Краткое резюме
- Тема: Seeders и Leechers: что означают цифры и как их измеряют
- Ключевые слова: Seeders, Leechers, Tracker scrape, Swarm size, DHT
- Для кого: backend-разработчики, исследователи протоколов, инженеры поисковых систем и разработчики BitTorrent-клиентов
- Цель: Объяснить механизм достаточно точно, чтобы на его основе можно было принимать реальные архитектурные решения для краулинга, индексации и поиска.
Системная схема
Определения и источник цифр
Seeder обычно имеет полный контент и продолжает отдачу, Leecher еще не завершил загрузку. Но видимая цифра зависит от того, кто ее измеряет. Нет единого центра, который собирает абсолютное глобальное состояние всех BitTorrent-клиентов.
Поэтому рядом с любым счетчиком полезно понимать его источник и время измерения.
Tracker scrape
Некоторые Tracker возвращают complete, incomplete и downloaded. Это хорошо определенная статистика для Peer, которых знает конкретный Tracker. Но Torrent может работать с несколькими Tracker, DHT и PEX, а множества участников пересекаются.
Складывать scrape counts разных Tracker напрямую нельзя.
Почему DHT не дает точный Seeder count
get_peers возвращает endpoints, но не сообщает, какая доля контента есть у каждого Peer. Один lookup также не видит все мировые Peer. Поэтому DHT лучше использовать для метрик вроде recently observed peers, last active и activity score.
Если продукт все же показывает Seeder/Leecher из Tracker, желательно указывать, что это snapshot конкретного источника.
Эскиз реализации
{
"source": "tracker_scrape",
"infohash": "...",
"complete": 142,
"incomplete": 37,
"observed_at": "2026-09-16T03:00:00Z"
}
Инженерные заметки BT9G Labs
Для индексатора уровня BT9G важнее не максимальное число событий, а правильное разделение идентичности контента, краткоживущих сетевых наблюдений, состояния сбора и поискового представления. Поля, полученные из DHT или от Peer, должны иметь источник и временную метку. Метрики стоит вести по этапам: discovery, соединение, handshake, поддержка расширений, получение Metadata, проверка, сохранение и индексация. Это позволяет видеть реальное узкое место системы, а не списывать все неудачи на «нестабильную сеть».
Типичные ошибки
- Считать любой активный Peer Seeder-ом.
- Суммировать несколько Tracker scrape без дедупликации.
- Выводить точный Seeder count из количества DHT endpoints.
- Показывать счетчик без источника и времени выборки.
Связанные статьи BT9G Labs
- BEP 10 Extension Protocol: как BitTorrent добавляет функции без потери совместимости
- Tracker vs DHT vs PEX: сравнение трех механизмов поиска Peer в BitTorrent
- Почему получение Torrent Metadata не удается: 10 реальных причин и правильная модель retry
- Архитектура высокопроизводительного DHT crawler: очереди, backpressure и границы ресурсов
Источники
Материал описывает публичное поведение протоколов BitTorrent для инженерных и исследовательских целей и не означает, что любой наблюдаемый Swarm доступен, корректен или разрешен к распространению.