UMGUM.COM 

BitTorrent ( Реализация схемы распространения файлов в сегментированной сети с помощью протоколов BitTorrent и HTTP. )

2 сентября 2010  (обновлено 31 января 2015)

Представим сеть с географически разнесёнными сегментами, на расстояние от десяти до тысячи километров. В каждом из сегментов есть как минимум один сервер под управлением Win2003/2008 или Linux/BSD с достаточно хорошей скоростью доступа из локальной сети, от 100 Mbs до 1000 Mbs и некоторое количество компьютеров пользователей, от 10 до 200 штук. Пропускная способность каналов передачи данных между сегментами существенно ниже, от 512 Kbs до 2 Mbs. Сегменты могут обмениваться данными между собой в рамках регламента доступа.

Задача - обеспечить возможность в любое время доставить на любой из компьютеров пользователей дистрибутивные файлы объёмом от 10 MB до 10 GB из некоторого, заранее обусловленного набора, не вводя, при этом, в ступор связь между сегментами сети.

Решение - BitTorrent.



Загружаем файл на один из центральных серверов, доступных оператору реализуемой схемы по высокоскоростному каналу передачи данных. На сервере регулярно отрабатывается скрипт, пробегающий содержимое директории хранения и генерирующий с помощью btmakemetafile (из пакета bittorrent) "торрент"-файлы. Содержимое директории с "торрент"-файлами доступно через HTTP и локально, их раздачу обеспечиваем с помощью Nginx и Rsync. Начальную публикацию данных с центрального сервера обеспечиваем с помощью утилиты btdownloadheadless (из пакета bittorrent).
На серверах, во всех удалённых сегментах устанавливаем "rtorrent" или "utorrent". Регулярно загружаем обновлённые "торрент"-файлы с центрального сервера с помощью утилиты "rsync". "Rtorrent" или "uTorrent" выкачивают файлы с центрального сервера и предоставляют возможность ими воспользоваться.

На всех серверах распространения необходимо будет регулярно запускать скрипт, сверяющий списки "торрент"-файлов и непосредственно файлов контента и удаляющий непарные - эдакая упрощённая реализация снятия раздачи. Учитывая то, что, далее, генерировать "торрент"-файлы мы будем с именем, повторяющем в точности имя файла распространения и сложностью разбора внутренностей файлов на платформе Windows, примем за критерий парности "торрент"-файла и файла контента совпадение их имён.

Теперь пользователю компьютера любого из сегментов достаточно выбрать "торрент"-файл на странице сайта на центральном сервере, например, по адресу "http://share.storage.local/". Преимущества протокола BitTorent известны всем, клиент может получать данные со множества узлов, а самый быстрый узел в каждом из сегментов - его сервер.

Инструкция оператора схемы будет состоять из одного пункта и одного замечания:

Пункт #1     - загрузить файл на сервер с помощью SFTP.
Замечание #1 - загружать файлы размером от 50 MB в конце рабочего дня, чтобы не замедлять работу сети.

В соответствии со способом реализации схемы файлы ресурсов будут доступны как по протоколу BitTorrent, так и по протоколу HTTP. Какой из них выбрать пользователю для получения требуемого? По мере разумения каждый выберет то, что ему ближе; один выберет то, что проще, но существенно дольше - HTTP, другой то, что чуть сложнее, но эффективнее - BitTorrent.