Немного статей про *nix
 

Компания Alibaba открыла код P2P-системы доставки файлов Dragonfly

14.06.2018

Alibaba, одна из крупнейших китайских IT-компаний, открыла исходные тексты распределённой системы доставки файлов Dragonfly, использующей механизмы P2P-коммуникаций для построения сети распространения контента. Система подходит для организации загрузки файлов, создания распределённых кэшей, систем доставки приложений и образов изолированных контейнеров. Код проекта написан на языках Go, Java и Python, и распространяется под лицензией Apache 2.0.

В отличие от других систем Dragonfly обеспечивает более высокую эффективность, экономит пропускную способность и гарантирует надёжность на уровне 99.9999%. Отмечается, что Dragonfly является одним из наиболее важных компонентов инфраструктуры, ежемесячно обслуживающего около двух миллиардов загрузок, суммарным размером более 3.4 ПБ. По сравнению с централизованными серверами загрузки контента, Dragonfly позволяет добиться постоянного времени отдачи, не зависящего от числа клиентов, одновременно загружающих данные.

Например, тестовая конфигурация на базе двух 24-ядерных сервера с 64 ГБ ОЗУ и каналом связи в 2000Mb/s смогла обеспечить отдачу 200-мегабайтного файла не больше чем 1200 одновременно подключенным пользователям. Время загрузки в пике при этом составляло около 14 минут. Благодаря применению P2P-механизмов Dragonfly обеспечил линейное масштабирование для неограниченного числа клиентов с постоянным временем загрузки в 12 секунд, независимо от числа пользователей.

Кроме передачи файлов большая ставка делается на применение Dragonfly для оптимизации доставки приложений и образов контейнеров в DevOps-системах. Dragonfly может интегрироваться с различными платформами контейнерной изоляции, не требуя изменения их движков. В том числе Dragonfly отлично интегрируется с системами управления контейнерами Docker и Pouch. По сравнению с традиционными средствами доставки контейнеров Docker, Dragonfly позволяет до 57 раз увеличить пропускную способность и на 99.5% сократить трафик, исходящий от реестра контейнеров.

Базовые компоненты Dragonfly (в будущем все компоненты планируется переписать на языке Go):

  • Supernode - написанный на языке Java менеджер кластера, выполняющий роль P2P-сервера, отвечающего за планирование P2P-задач и создание кэша CDN. Supernode разбивает файл на блоки и определяет какие узлы (peer) будут участвовать в доставке этих блоков
  • Dfdaemon (dfget) - написанный на языке Go процесс для распространения файлов или образов, который работает на стороне клиента (peer) и участвует непосредственно в доставке запрошенных блоков файла. Dfdaemon также может выполнить функции зеркала репозитория или прокси для Docker;
  • Getter - написанный на Python модуль, отвечающий за передачу файлов и организацию совместного доступа к ним.

Основные возможности:

  • Использование P2P-технологии для передачи файлов - каждый клиент Dragonfly является звеном, транслирующим уже полученные данные другим клиентам. Каждый файл разбивается на несколько блоков, которые отдельно передаются между разными узлами (peer). Работа каждого узла P2P-сети обеспечивается отдельным клиентом. Централизованный менеджер кластера имеет информацию о разбивке файлов и о том, какие блоки имеются на каком клиенте, а также осуществляет первичную загрузку файлов из исходного файлового сервера;
  • Возможность интеграции с инструментариями контейнерной изоляции для организации распределённой доставки образов контейнеров;
  • Возможность ограничения суммарной пропускной способности на уровне всего хоста, а не только на уровне отдельных соединений;
  • Работа в форме пассивной сети доставки контента (CDN), позволяющей избежать повторяющихся удаленных загрузок;
  • Гарантированное обеспечение целостности передаваемых файлов, без необходимости дополнительной проверки пользователем контрольных сумм;
  • Оптимальное хранение данных на диске и эффективный ввод/вывод. Например, применяются такие техники, как предварительная проверка дискового пространства, отложенная синхронизация, запись блоков в оптимальном порядке, разбиение операций сетевого чтения и записи на диск;
  • Высокая производительность: система управления кластером (компонент Cluster Manager) замкнут на самом себе и не зависит от внешних СУБД и распределённых кэшей;
  • Автоматическая изоляция сбойных узлов для повышения стабильности всей сети доставки файлов;
  • Отсутствие нагрузки на базовый сервер, который предоставляет исходные файлы - по сути нагрузка на такой сервер сводится к нескольким загрузкам файла менеджером кластера;
  • Поддержка штатных HTTP-заголовков, в том числе возможность подстановки информации об аутентификации через HTTP-заголовки;
  • Эффективное управление нагрузкой на реестр аутентификации (Registry Auth Service);
  • Простая настройка, для начала работы необходимо внести минимальные изменения в конфигурацию. Для развёртывания сети требуется создание сервера с менержером кластера и установку на каждый клиент специального ПО.


Источник: OpenNET

Похожие страницы:

Партнеры проекта
Хостинг от RU-Life.NET - надежно, выгодно, проверено!
 

Все права защищены. © Unix66.ru, 2009

Допускается полное, либо частичное цитирование размещенной информации,
при условии размещения ссылки на Unix66.ru в качестве источника.