Что такое раздача файлов

Обновлено: 06.07.2024

Совме́стное испо́льзование фа́йлов (жарг. расша́ривание, от англ. file sharing ) — предоставление файлов, находящихся на компьютере, в общий доступ для других пользователей компьютерной сети.

При совместном использовании возможно разделение доступа и управление доступом, то есть предоставление доступа к файлу только ограниченному кругу пользователей и (или) с определённых компьютеров; возможно предоставление различных прав доступа:

  • доступ только для чтения,
  • право чтения и изменения,
  • и т. п.

В современном Интернете популярностью пользуются файлообменные сети, предоставляющие доступ (только для чтения) к избранным популярным файлам достаточно широкому (нередко и вовсе неограниченному) кругу пользователей, с целью обмена файлами (файлообмен). Этот процесс называется раздачей файла.

Вторым значением термина «совместное использование файлов» является одновременная правка файла несколькими пользователями. Это используется в современных системах разработки, нередко в сочетании с определённой системой управления версиями.

См. также

Wikimedia Foundation . 2010 .

Смотреть что такое "Раздача файла" в других словарях:

Torrent — Эта статья о протоколе. Статья о клиенте: BitTorrent (программа). Содержание 1 Принцип работы протокола 1.1 Структура трафика … Википедия

БитТоррент — Эта статья о протоколе. Статья о клиенте: BitTorrent (программа). Содержание 1 Принцип работы протокола 1.1 Структура трафика … Википедия

Super-seeding — Суперсид (англ. Super seeding) специальный режим раздачи в некоторых BitTornado в середине 2003. Содержание 1 Механизм 2 Применение 3 Клиенты с функцией суперсид … Википедия

Super seeding — Суперсид (англ. Super seeding) специальный режим раздачи в некоторых BitTornado в середине 2003. Содержание 1 Механизм 2 Применение 3 Клиенты с функцией суперсид … Википедия

StrongDC++ — Внешний вид главного окна программы Тип Файлообменные сети Разработчик BigMuscle Написана на … Википедия

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

Самый простой способ — собирать самому все листы, проверять, чтобы среди них не попадались дубликаты и ждать, пока таким образом не соберётся вся книга. Но это долго — скорость сбора целой книги напрямую зависит от количества страниц. Книгу из 100 страниц мы будем собирать 10 часов, а из 1000 страниц — 4 дня.

Но есть способ собрать книгу быстрее, и для этого понадобится помощь других прохожих. Мы будем спрашивать у всех, какие страницы есть у них. Если у нас таких нет — берём их страницы и снимаем копии. А чтобы было честно, отдаём свои страницы на копирование тем, у кого их нет.

Чем больше людей, тем больше в обращении страниц, тем быстрее у вас соберётся книга.

Теперь про торренты

Если в этой ситуации книгу заменить на файл, а прохожих — на компьютеры, то получится описание торрент-сети. Эта сеть основана на протоколе Bittorrent, который делает так:

  • Берёт документ или видео, которым вы хотите поделиться с другими, и делает для него специальное описание — torrent-файл.
  • В torrent-файле записано, на кусочки какого размера нужно разделить этот документ, как их собирать и адрес компьютера, откуда эти кусочки файла можно скачать.
  • Torrent-файл выкладывается на форум или в любое другое место, откуда его можно скачать. На этом пока остановимся и разберём подробнее.

Для того чтобы поделиться с кем-то своим файлом, не обязательно отправлять его целиком. Достаточно сделать из него торрент и поделиться ссылкой. Главное, помните: у кого будет torrent-файл, тот и может скачать этот документ. Если он доступен всем, то и скачивать могут тоже все.


В торрентах файл передается по кусочкам от пользователя к пользователю напрямую.

Как происходит скачивание

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

В итоге вы скачиваете файл случайными кусочками, а все кругом могут узнать, какие кусочки есть у вас.

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

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


Пользователи обмениваются недостающими кусочками файла друг с другом.

Термины

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

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


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

Этикет

Сообщество не приветствует тех, кто скачивает файл и сразу уходит с раздачи. Такие пиры помогают остальным, пока качают, но от них больше нагрузки на сеть, чем пользы. По-настоящему полезные ребята — те, кто скачали файл сами и раздали его много раз другим ребятам.


Даже если изначальный раздающий окончательно пропал, раздача продолжается за счет тех, кто уже успел скачать файл.

У торрентов своя атмосфера

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

Само использование торрентов — не запрещено. Но если нарушать торрентами чьи-то права, то вот это будет запрещено — по решению суда.

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

Первый торрент-клиент — BitTorrent — был написан на Python. Мы уже говорили о том, почему Питон — это классно, и повторим это снова.

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

Так как всем нужна информация о том, где брать остальные куски файлов, то каждый участник видит IP-адреса других пиров. Анонимности в торрентах нет.

В последнее время наметился интересный тренд — быстрое «распухание» веб-проектов до бесконечности. Объем данных многих популярных сайтов растет все быстрее и быстрее, их нужно куда-то девать, при этом эффективно бэкапить (весело будет, если файлы на 500Т потеряются :-) ), и конечно супербыстро раздавать клиентам, чтобы все их могли качать, качать, качать… на высокой скорости.

Для системного администратора задача даже редкого, ежедневного резервного копирования такого объема файлов навевает мысли о суициде, а менеджер веб-проекта просыпается в холодном поту от мысли о предстоящей профилактике датацентра на 6 часов (чтобы файлы перевести из одного датацентра в другой нужно пару раз загрузить багажник автомобиля винчестерами :-) ).

Коллеги с умным видом советуют приобрести одно из решений от NetApp, но, жаль, что бюджет у проекта в 1000 раз меньше, это вообще стартап… что делать будем?

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

Доступ в гардероб HighLoad


Если Вы хоть раз посещали конференцию HighLoad, то наверняка знаете, что на входе нужно обязательно ответить на вопрос — почему ставят nginx перед apache? Иначе дальше гардероба не пройти ;-)

Правильно, nginx или аналогичный обратный прокси позволяет эффективно раздавать файлы, особенно по медленным каналам, серьезно снижая нагрузку на сервер и повышая в целом производительность веб-приложения: nginx раздает кучу файлов, apache или php-fpm обрабатывают запросы к серверу приложений.

Такие веб-приложения живут хорошо, пока объем файлов не увеличивается до, скажем десятков гигабайт — когда несколько сотен клиентов начинают одновременно скачивать файлы с сервера, а памяти для кэширования файлов в ОЗУ недостаточно — диск, а потом и RAID — просто умрет.

Сервер статики


Чтобы более эффективно раздавать статику с разных доменов, ее выносят на отдельный сервер(а) статики:

Полезно на этом сервере использовать режим кэширования nginx и «быстрый» RAID (чтобы побольше клиентов требовалось для постановки диска «на колени»).

CDN — раздача

  • Ценный клиент начал качать файл с московского сервера из Владивостока, да не из города, а с борта своей яхты. Канал конечно получился узкий.
  • Случилась беда и уборщица случайно выдернула шнур питания из сервера раздачи статики, оборвав 10000 клиентов, качающих новый дистрибутив. Ну или в датацентре началась и «неизвестно» когда окончится профилактика — а точнее работы по поиску причины одновременного выхода из строя трех дизельных генераторов из двух.
  • Наоборот, мог случиться такой наплыв клиентов, что стало не хватать серверной мощности раздавать одновременно столько статики, либо уже каналы загружены до предела.


В общем все понимают, что нужно быть как можно ближе к клиенту и отдавать клиенту столько статики, сколько он хочет, на максимально возможной быстрой скорости, а не сколько мы можем отдавать со своего сервера(ов).
Эти задачи в последнее время начала эффективно решать технология CDN.

Ваши файлы действительно становятся доступны клиенту на расстоянии вытянутой руки, откуда бы он их не начал качать: с Красной площади или с Сахалина — файлы будут отдаваться с ближайших ему серверов провайдера CDN.

«Вертикальное» масштабирование раздачи статики

Кружочки и колесики — распределенная файловая система


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

Тогда придется все это хозяйство администрировать самостоятельно, что потребует наличие видимо целого отдела эксплуатации :-)

Виртуальная файловая система

Одним из наиболее эффективных и, что важно, дешевых решений, является использование возможностей известных облачных провайдеров, дающих в аренду по очень вкусным, особенно при большом объеме данных, ценам, способ хранить неограниченный объем ваших файлов в облаке с очень высокой надежностью (гигантский DropBox). Провайдеры организовали на своих мощностях описанные выше распределенные файловые системы, высоконадежные и размещенные в нескольких датацентрах, разделенных территориально. Более того, эти сервисы, как правило, тесно интегрированы в сеть CDN данного провайдера. Т.е. вы будете не просто удобно и дешево хранить свои файлы, но и их максимально удобно для клиента раздавать.


Дело за малым — нужно настроить на своем веб-проекте прослойку или виртуальную файловую систему (или аналог облачного диска). Среди бесплатных решений можно выделить FUSE-инструменты (для linux) типа s3fs.

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

Модуль «Облачные хранилища» платформы «1С-Битрикс»


В нашем продукте мы тщательно проанализировали вышеописанные кейсы веб-проектов, которым нужно быстро доставлять файлы клиентам, а иногда файлов — терабайты и более и реализовали данные возможности «из коробки» в модуле «Облачные хранилища».

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

Итоги

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

В статье мы рассмотрели основные этапы и принципы организации раздачи файлов на веб-решениях любого размера, взвесили плюсы и минусы, посмотрели как это реализовано в платформе «1С-Битрикс». С учетом того, что объем раздаваемой веб-проектами информации очень быстро растет, данные знания актуальны и обязательно пригодятся как архитекторам веб-приложений, так и менеджерам проектов.

И конечно приглашаю всех на наш облачный сервис «Битрикс24», в котором мы активно используем вышеописанные технологии. Всем удачи!

В подробных описаниях тарифов мобильных операторов нередко можно встретить понятие «файлообменные сети», особенно это касается тарифов с безлимитным интернетом. Иногда оператор ограничивает скорость абонента в файлообменных сетях, иногда – закрывает к ним доступ вообще, а МТС, например, недавно на новом «Тарифище», обновленном 13 февраля 2020 года, стал брать за использование файлообменных сетей 75 рублей в сутки. И некоторым абонентам стало очень интересно, что это за файлообменные сети вообще?


Файлообменная сеть – это собирательное название одноранговых компьютерных сетей для совместного использования файлов. Эти сети основаны на равноправии всех участников – каждый из них одновременно является и клиентом, и сервером. Говоря простыми словами, это сеть, в которой абоненты и качают, и раздают определенные файлы, при этом эти самые файлы хранятся не на сервере, а на компьютерах пользователей.

Файлообменные сети можно разделить на:

  • Централизованные сети. Для объединения пользователей используется сообщество, а служебную информацию хранят индексационные серверы. При их отключении сеть перестаёт функционировать. Наиболее известный представитель – Direct Connect.
  • Децентрализованные сети. Работают без индексационных серверов. Передаваемой служебной информации в таких сетях больше, но насильно функционирование такой сети остановить нельзя. Наиболее известный представитель – Gnutella.
  • Гибридные сети (частично децентрализованные). Сочетают в себе скорость централизованных и надёжность децентрализованных сетей за счёт гибридных схем. Гибридные сети используют независимые индексационные серверы. При закрытии одного сеть продолжает функционировать, так как есть другие. Наиболее известные представители – eDonkey2000, Torrent.

BitTorrent – это пиринговый сетевой протокол для кооперативного обмена файлами через Интернет, т.е. для обмена файлами между пользователями. Технология относится к гибридным файлообменным сетям. Протокол используется клиентами BitTorrent и uTorrent, второй – более популярен.

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

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


Файлообменные сети – это крайне удобный инструмент для огромного количества пользователей, позволяющий качать музыку, фильмы, игры, программы и т.п. Но не стоит забывать, что в подавляющем большинстве случаев нарушаются авторские права, поэтому нередко торрент-трекеры блокируются.

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

Читайте также: