LINUX.ORG.RU

Передать файл на несколько получателей

 


0

1

Как быстрее всего передать один и тотже файл на несколько получателей ?
Пока придумал только торрент (libtorrent) и проверил (qbittorent) - да быстрее, чем каждому по очереди

fix мультикаст нельзя

★★★★★

Последнее исправление: x905 (всего исправлений: 1)
Ответ на: комментарий от vodz

так и знал что зря про локалку упомянул, нельзя мультикаст )

x905 ★★★★★
() автор топика
Ответ на: комментарий от Harald

насколько быстро тебе нужно, чем по HTTP не устроит?

очевидно нужно быстрее чем каждому по очереди, иначе вопрос бы не задавал

x905 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А это точно не преждевременная оптимизация?

это выбор способа передачи

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

У тебя что, однопоточный вебсервер? Почему по очереди отдает? Возьми тот же nginx, он прекрасно статику отдает, можно настроить HTTP/2, там еще и в несколько потоков на каждого клиента можно.

hippi90 ★★★★★
()
Ответ на: комментарий от kawaii_neko

Мультикастом. А если сеть не гигабитная, рекомендую присмотреться к внешнему жесткому диску.

Напомнило шутку про рекордную скорость передачи данных и жесткий диск...

reprimand ★★★★★
()
Ответ на: комментарий от hippi90

У тебя что, однопоточный вебсервер? Почему по очереди отдает?

канал не резиновый, отдавай на 10 сразу, но каждому в 10 раз медленнее

x905 ★★★★★
() автор топика
Ответ на: комментарий от peregrine

А нормальный сервер не по очереди отдает, а во много потоков.

и как я смогу каждому отдавать по 100мбит на 100мбит сети ?

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

А это уже не проблема по очереди, а проблема узкого канала. Если канал нет возможности расширить, то поможет torrent - те кто качают пусть тоже раздают.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от reprimand

Напомнило шутку про рекордную скорость передачи данных и жесткий диск...

и в чём шутка?

aureliano15 ★★
()
Ответ на: комментарий от x905

и как я смогу каждому отдавать по 100мбит на 100мбит сети ?
Пока придумал только торрент (libtorrent) и проверил (qbittorent) - да быстрее, чем каждому по очереди

По твоему torrent делает из 100мбит сети гигабитную? В торренте есть оверхед и лишнее усложнение. Передовай в n потоков.

anonymous
()
Ответ на: комментарий от anonymous

По твоему torrent делает из 100мбит сети гигабитную? В торренте есть оверхед и лишнее усложнение. Передовай в n потоков.

ты убедись сначала, что torrent действительно ускоряет, о чем я вначале и написал, а затем предложи что то лучше

x905 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

По твоему torrent делает из 100мбит сети гигабитную?

Это смотря как считать. Если из расчёта, когда файл полностью окажется ещё у кого-нибудь кроме раздающего, тогда чуть менее 100Мбит, если из расчёта, когда файл будет у всех заинтересованных получателей, то в зависимости от производительности коммутатора может быть и несколько гигабит, как матрица клиент-клиент в коммутаторе локалки сработает, ну и получателей должно быть больше 2. :)

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)

А я бы монтировал с сервера каталог с файлом по https://ru.wikipedia.org/wiki/Network_File_System и перечитывал бы содержимое файла клиентскими приложениями при его изменении.

Если целевой файл filename.ext сколько-нибудь значимо большой, то завёл бы рядом с ним отдельный маленький файлик/триггер/флажок с мета-информацией, например, https://ru.wikipedia.org/wiki/MD5: filename.ext.md5 и определял бы необходимость перечитать целевой файл filename.ext по изменению файлика filename.ext.md5, содержимое которого будет посчитано и изменёно, только после того, как целевой файл filename.ext полностью сформирован и записан.

anonymous
()
Ответ на: комментарий от anonymous

Какие плюсы:
* мгновенная доставка целевого файла filename.ext всем клиентам одновременно
* экономия дискового пространства на клиенте
* мгновенное переключение целевого файла filename.ext -- файлик/триггер/флажок filename.ext.md5 может указывать на актуальный целевой файл filename.ext или, просто, быть линком на текущий актуальный filename.ext.md5 (я бы сделал так)
* из предыдущего пункта следует появление версионности и возможность быстрого и дешёвого переключения между версиями целевого файла filename.ext (мне нравится идея изменения линка - более атомарная операция :)
* backup, history, update и restore/rollup — оперативно дёшевы при изменениях в пределах каталога, версии переключаются редактированием/изменением линка
* теоретически, клиенты смогут работать с разными/несколькими версиями целевого файла filename.ext

Минусы:
* <сам придумай> :)

anonymous
()
Ответ на: комментарий от anonymous

Кстати, да, в клиентских приложениях следует _перед_каждой_ операцией чтения из целевого файла filename.ext проверять файлик/триггер/флажок filename.ext.md5 на предмет изменения, и обрабатывать ситуацию. Полагаю, это совсем уж очевидно :)

anonymous
()
Ответ на: комментарий от anonymous

* мгновенная доставка целевого файла filename.ext всем клиентам одновременно

а я думал это зависит от скорости канала и количества клиентов

остальное не интересно ибо не решается основная задача

x905 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.