Есть у кого опыт реализации торрент-клиента?

YUAL

Надо создать систему разлития контента по сотне серверов. Точнее заменить старое говно на новое надеюсь неговно.
Собственно надо обрабатывать порядка 50 террабайт файлов. Файлы размером от 500 мегабайт до 10 гигов. средний размер порядка 2 гигабайт. и того ~ 25к файлов. каждый файл - отдельный торрент.
Раз в какое-то время (грубо говоря раз в пол часа) сервер получает список торрент файлов, проверяет чего у него нет и закачивает недостующее, удаляет то чего нет в списке.
Соответственно нужна библиотека (желательно опенсорсная которая позволит обрабатывать такое кол-во файлов не превращая сервер в лагодром. Мой опыт общения с торрент-клиентами подсказывает, что многие из них не способны обработать 2-3к торрент-файлов. Мой опыт неудачен или они реально все тормознутые и для реализации моей задачи ничего не найти?

katrin2201

libtorrent
2-3к файлов у меня легко помещается в азуреусе

YUAL

2-3к файлов у меня легко помещается в азуреусе
ну мне надо на порядок больше. нагрузка может существенно возрасти.

agaaaa

Мой опыт неудачен или они реально все тормознутые и для реализации моей задачи ничего не найти?
Ты уже смотрел где у них затыки?

katrin2201

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

vall

оооо дааа, java тут очень к месту :grin:
я бы попробовал взять за основу btpd. только C, только хардкор!

PooH

писал даунлоадер для скачивания клиентов игр от компании
c# + monotorrent
наебался на 100 лет вперед (особенно с DHT)
так что не советую

katrin2201

И ты, Брут? =)
Я в общем-то и не настаиваю, знаю, что вы все ее очень не любите, а я довольно однобок в выборе инструментов, потому и примеры мои однобоки =)

Но правда в том, что headless azureus сейчас жрет не больше цпу, чем какой-нить мюторрент. Памяти - может быть и побольше. И то, не факт, что я не добьюсь того же или лучшего результата, подогнав размер кучи и буферов под то, что у мюторрента. Или какой у вас там православный клиент эталоном считается.
И да, азуреусовским плагином я вам наваяю менеджинг очереди, например, за денек :p

shlyumper

Имел дело с btpd. Когда речь идет о нескольких тысячах файлов в нем надо всякие таймауты чуть потюнить, иначе он ведет себя не очень адекватно. А так да, 3000 файлов он держит легко и не напрягаясь.

vall

ещё можно aria2 обернуть скриптами и логикой, это типа wget но может в торренты

YUAL

Ну вообще яваапи было бы плюсом. Потому что обёртку доверят писать скорее всего чувакам которые по яве заморачиваются. Я чисто проектирую.
Затык того что я пробовал я не особо изучал. Это было года 3 назад и чисто однарзовой задачей. Я её решил сократив кол-во торрентов, качаемых клиентом за раз.

serega1604

не понятно, зачем для того писать новый торрент клиент?
бери тот, который выдерживает такие нагрузки и имеет способ управления отличный от мышевозюканья, хоть btpd, хоть любой другой.

tokuchu

rtorrent тоже позволяет в конфиге указать всякие опции по мониторингу каталогов на предмет добавления-удаления торрентов. Но десятки тысяч торрентов не пробовал запихнуть в него.

PooH

не понятно, зачем для того писать новый торрент клиент?
бери тот, который выдерживает такие нагрузки и имеет способ управления отличный от мышевозюканья, хоть btpd, хоть любой другой.
до тоже самое получится, только без лишнего интерфейса и с более тонкой подгонкой

PooH

если не писать с нуля, конечно, а юзать либу

pilot

Надо создать систему разлития контента по сотне серверов. Точнее заменить старое говно на новое надеюсь неговно.
Зачем для этого торренты? :facepalm:

AlexV769

rtorrent тоже позволяет в конфиге указать всякие опции по мониторингу каталогов на предмет добавления-удаления торрентов. Но десятки тысяч торрентов не пробовал запихнуть в него.
на 400 торрентах и Atom N270 способен выжимать около 40 Мбит/с в полудуплексе.

Dasar

Зачем для этого торренты? :facepalm:
Нагрузку на центральный сервак уменьшит.

pilot

Нагрузку на центральный сервак уменьшит.
Простых способов это сделать не знаешь? :facepalm:

Dasar

Простых способов это сделать не знаешь?
придется велосипед в том или ином виде строить.

pilot

придется велосипед в том или ином виде строить.
Правильно, не наш метод! Надо построить микроскоп и забить им гвоздь. :grin:

YUAL

Простых способов это сделать не знаешь?
Ну расскажи как, раз такой умный. Хуле?
300 серверов, раскиданы от Калининграда до Камчатки включительно . Контент регулярно обновляется.
Как счас сделано: Есть центральный сервер. Он заливает на 7 серверов, раскиданных по крупным центральным узлам, которые в свою очередь занимаются только тем, что по другим серверам разливают и удаляют старое. по ftp :)
Чисто для справки канал из Владивостока на Камчатку 10 мегабит через спутник с соответствующими пингами, а на камчатке 2 сервера. А канал от Якутска до Нерюнгри вообще радиорейлека, которая за сутки несколько раз рвёт коннект.

YUAL

это не считая проблем, что на серверах может закончиться место(они не одинакового объема отвалиться сеть на неделю, сдохнуть рэйд и потребуется полное обновление.

pilot

Ну расскажи как, раз такой умный. Хуле?
man rsync
 
300 серверов, раскиданы от Калининграда до Камчатки включительно . Контент регулярно обновляется.

В итоге сервера у тебя неоднородные. Надо поднять таки задницу и настроить их не совсем однородно, имхо.
 
Как счас сделано: Есть центральный сервер. Он заливает на 7 серверов, раскиданных по крупным центральным узлам, которые в свою очередь занимаются только тем, что по другим серверам разливают и удаляют старое. по ftp :)

И в чем проблема? 7 - мало?
 
Чисто для справки канал из Владивостока на Камчатку 10 мегабит через спутник с соответствующими пингами, а на камчатке 2 сервера. А канал от Якутска до Нерюнгри вообще радиорейлека, которая за сутки несколько раз рвёт коннект.

это не считая проблем, что на серверах может закончиться место(они не одинакового объема отвалиться сеть на неделю, сдохнуть рэйд и потребуется полное обновление.

Ага, ага. Торрентам тут самое место. :grin:

tokuchu

на 400 торрентах и Atom N270 способен выжимать около 40 Мбит/с в полудуплексе.
Да с этим проблем вроде нет, да. Но у меня хеши долго считает и при этом не отзывается и если много сразу скачивать, то память хочет. Но этом возможно у всех так. :)

YUAL

man rsync
охуенно. а то что мне надо не просто сзеркалировать все сервера и где-то какого-то контента не должно быть? генерить списки ввиде файла и передавать рсинку?
В итоге сервера у тебя неоднородные. Надо поднять таки задницу и настроить их не совсем однородно, имхо.
что ты имеешь ввиду? у них естественно не едентичные конфигурации.
И в чем проблема? 7 - мало?
много. в схеме с торрентам от них вообще можно отказаться.
а проблема в том что эта иерархическая структура просто не уместна на самом деле. распределёная имеет преимущества. во-первых по сути исчезает передаточное звено ввиде промежуточных коллекторов. это минус всякие проблемы с ним.
во-вторых повышается скорость заливки нового контента.
в-третьих упрощается масштабирование.
Ага, ага. Торрентам тут самое место.
ну торренты как раз лучше подходят для работы через малокачественные плохоконтролируемые каналы связи, чем классические протоколы, которые работают с целыми файлами, а не кусками.

serega1604

до тоже самое получится, только без лишнего интерфейса и с более тонкой подгонкой
и с кучей граблей, на которые авторы других клиентов уже наступали, а ты ещё нет.
если что для тонкой подгонки можно и патчик наложить в пару строк, а интерфейс я вообще не понял к чему упомянут, тебе мешает что-то в том же btpd?

yroslavasako

Надо создать систему разлития контента по сотне серверов. Точнее заменить старое говно на новое надеюсь неговно.
Явно попахивает тем, что такое решение уже есть. Только искать надо в стороне.
Посмотри на FreeNET с кастомной настройкой. По идее там есть режим белого листа (когда общение идёт только с явно указанными абонентами плюс там можно настраивать уровень избыточности/безопасности и убрать промежуточные лишние в твоей ситуации пересылки данных. FreeNET результаты отдаёт через http и будет несложно автоматизировать обновление данных при обновлении привязанных к ключу страничек.

Bayur19

Явно попахивает тем, что такое решение уже есть. Только искать надо в стороне.
В facebook выкладки обновлений посредством торрентов делаются, так что топик-стартер не одинок в своем выборе :)
Инфа отсюда:
http://arstechnica.com/business/2012/04/exclusive-a-behind-t...
Rossi explained that Facebook created its own custom BitTorrent tracker, which is designed so that individual servers in Facebook's infrastructure will try to obtain slices from other servers that are on the same node or rack, thus reducing total latency.
Rolling out a Facebook update takes an average of 30 minutes—15 minutes to generate the binary executable and another 15 minutes to push the executable to most of Facebook's servers via BitTorrent.

pilot

охуенно. а то что мне надо не просто сзеркалировать все сервера и где-то какого-то контента не должно быть? генерить списки ввиде файла и передавать рсинку?
Если ты все-таки подумаешь головой,то списки "на каком сервере что должно быть" тебе в любом случае генерировать придется. В чем проблема хранить их в виде файла — непонятно.
что ты имеешь ввиду? у них естественно не едентичные конфигурации.

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

Ты задачку решаешь от нечего делать что ли? Какие проблемы на данный момент-то есть?
В примерах решений задач "разлить одинаковый контент по однородным серверам в пределах ДЦ", которые я знаю, делали так: с мастера копируем на следующий, на следующем начинаем копировать дальше как только получили первые байты файлов. В итоге копируется кольцом за время чуть больше чем одно копирование на сервер.
ну торренты как раз лучше подходят для работы через малокачественные плохоконтролируемые каналы связи, чем классические протоколы, которые работают с целыми файлами, а не кусками.

rsync --partial

PooH

а интерфейс я вообще не понял к чему упомянут
интерфейс не в смысле морды, а в более общем смысле
программа запускается и выполняет одну задачу
не очень удобно (по своему опыту поддерживать более обширный функционал, чем необходимо
Оставить комментарий
Имя или ник:
Комментарий: