У меня есть 1 исходный сервер, содержащий около 30 ГБ файлов, которые я хочу скопировать на 7 других серверов. В настоящее время я отправляю файлы на первые четыре сервера, а когда эта передача завершается, отправляю файлы на последние 3 сервера.
Будет ли с помощью BitTorrent быстрее распространять файлы сразу на все 7 пользователей? Внутреннее соединение между каждым из серверов уже быстрое и стабильное. Я знаю, что это, вероятно, снизит нагрузку на исходный сервер, но не займет ли больше времени распространение файлов?
Какой хороший скриптовый клиент я мог бы использовать из оболочки? Я бы хотел, чтобы все прекратили посев после 100%.
Это зависит от того, как устроена ваша сеть и где есть узкие места, но да, BitTorrent может быть быстрее. Теоретически, вместо отправки 7 копий одних и тех же файлов, ваш исходный сервер должен отправить только 1 копию, разделенную между получателями. К тому времени, когда это произойдет, оставшиеся одноранговые узлы поделятся между собой частями, которые они не получили.
Однако, если ваша сеть поддерживает многоадресную рассылку, вероятно, проще настроить udpcast, mdp, многослойныйили что-то в этом роде: ваш источник отправит одну копию данных, а сеть направит ее всем получателям.
Преимущество BitTorrent перед другими инструментами распространения файлов, например rsync, заключается в том, что клиенты начинают предлагать свои данные другим клиентам, поэтому, если сервер имеет медленное соединение с клиентами, пропускная способность будет намного лучше.
Однако BT - это протокол, который предназначен для глобального обмена. Таким образом, вам нужно будет найти способ заблокировать всех других клиентов, кроме тех 7, которых вы хотите кормить (иначе ваш торрент скоро окажется в The Pirate Bay).
Что касается остановки на 100%, каждый клиент BT сделает это: поскольку ни один клиент больше не запрашивает данные, посев больше не будет. Приложение по-прежнему будет работать, но они вызовут лишь небольшую струйку данных между клиентами и трекером, чтобы сообщить ему, что они все еще доступны.
Попробуйте оригинальный клиент BitTorrent, написанный на Python. Это позволит вам вносить любые изменения по вашему желанию. К сожалению, я не могу найти ссылку на банкомат. Кто угодно?
[РЕДАКТИРОВАТЬ] На основе комментария сауа: Если вы используете приватный трекер, ваши торренты не должны распространяться неожиданно. Тем не менее, вы должны использовать торрент-клиент только из надежного источника. В противном случае вы можете рискнуть, что какой-нибудь взломщик добавил в код небольшую дополнительную функцию, которая публикует частные торренты там, где вы не хотите, чтобы они появлялись.
BitTorrent - отличная идея, если вы хотите реплицировать файлы через дерево серверов без, например, необходимости отдавать удаленную команду всем серверам для копирования из одного и того же места; потенциально вызывая узкое место.
Инженеры Twitter сделали это с большим успехом с помощью Murder, которая сейчас находится на github.
http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html
Если все 8 ваших серверов подключены к одному и тому же разделу сети, использование Bit Torrent вряд ли ускорит процесс. Фактически, вы получите столько столкновений, что это, вероятно, будет очень медленным. BitTorrent может ускорить процесс только в том случае, если вы используете полностью коммутируемую сеть, и восемь серверов могут общаться друг с другом независимо, не влияя на связь между другими серверами.