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

13 июня 2018 года

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

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

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

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

Базовые компоненты Dragonfly:

  • 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);
  • Простая настройка, для начала работы необходимо внести минимальные изменения в конфигурацию. Для развёртывания сети требуется создание сервера с менержером кластера и установка на каждый клиент специального ПО.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Компания Alibaba открыла код P2P-системы доставки файлов Dragonfly», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.