Существует две основные проблемы:
- Каждый торрент (обычно) должен периодически сообщать трекеру, что может привести к использованию значительной полосы пропускания.
- Бит-торрентсам клиент должен быть написан так, чтобы масштабироваться с большим количеством торрентов
Что касается трафика трекера, давайте предположим, что у вас есть 1 миллион торрентов, типичный интервал повторного объявления составляет 30 минут,но у некоторых трекеров он установлен на 1 час.Давайте будем консервативны и предположим, что ваш трекер использует 1-часовой интервал объявления.Вам нужно будет делать 1 миллион запросов GET в час, скажем, каждый запрос на 400 байтов вверх и на 100 байтов вниз (при условии, что большинство ответов не содержат одноранговых узлов), это примерно на 111 кБ / с и на 28 кБ / с постоянно.Это не так уж и плохо, но имейте в виду, что TCP требует дополнительного обхода для установления соединений, так что это еще 40 байтов вниз и 40 байтов вверх.
Это можно уменьшить, используя только UDP-трекеры.Тогда вам потребуется только одно сообщение о подключении, и вы можете повторно использовать идентификатор подключения для каждого объявления.Каждое объявленное сообщение тогда будет иметь размер 100 байт, и возвращаемое сообщение также будет немного более компактным, допустим, 60 байт.Это увеличит скорость до 28 кБ / с и снизит 16 кБ / с, просто чтобы объявить торренты.Для этого вам понадобится клиент с приличной поддержкой трекера udp (например, который кэширует идентификатор соединения).
Не так уж и плохо, если предположить, что это незначительно по сравнению с фактическими данными, которые будут отправлять ваши семена.
Однако вам не обязательно чередовать торренты по отдельным центрам обработки данных, вы также можете использовать HTTP-сервер для заполнения торрентов.Все основные клиенты Bittorrent поддерживают заполнение http, и вам не придется беспокоиться об объявлении на трекер (URL записывается в сам .torrent).
Что касается клиента, который хорошо масштабируется с помощью торрентов, яне знаю точно, я не делал никаких измерений.Было бы достаточно просто сгенерировать миллион случайных торрентов и попытаться загрузить их.
Я провел некоторую работу по оптимизации в libtorrent rasterbar , чтобы он хорошо масштабировался со многими торрентами.Я не пробовал миллионы.
Я написал сообщение в блоге на эту тему, здесь .