Задать вопрос
@Hocok_B_KapMaHe

Раскритикуйте архитектуру доставки видео контента?

Добрый день,
Есть схема доставки видео (по протоколу HLS) которую я хочу использовать в своем проекте.

Я был в ней полностью уверен, пока некоторые не заставили меня в ней засомневатся (хотя я думаю зря, но хочу услышать мнение остальных)

Смысл ее в следующем:
У нас есть видео, мы его кодируем в 3 качества:
* 720p (до 4Мбит\сек, - макс. размер сегмента около 6 МБ)
* 360p (до 1 Мбит\сек, - макс. размер сегмента 1,5 МБ)
* 240p (до 500Kbit\сек., - макс. размер сегмента 0,6 Мб)

После этого разбиваем на кусочки длительностью по 10 сек. (рекомендация apple) и размазываем по всем серверам:

Сегменты равномерно распределены по нодам, т.е.:
* сегменты с 0 секунды по 10 секунду в 3х качествах хранятся на первом ноде
* сегменты с 10 секунды по 20 секунду в 3х качествах хранятся на втором ноде
* сегменты с 20 секунды по 30 секунду в 3х качествах хранятся на третьем ноде

и т.д.

Когда сегментов больше чем нодов, они сохраняются по кругу.

Кроме того у каждого нода есть свой дубликат, который хранит полную копию своего нода.
Т.е. очень похоже на RAID 51

Когда клиент приходит посмотреть видео, он попадает на первый нод, выкачивает (если позволяет скорость сети = его + нода) самый большой сегмент (hd качество), затем запрос потупает на второй нод, оттуда берется сегмент, потом с третьего и т.д.

В случае "проседания" сети на ноде, он отдает сегменты в низком битрейте.

Дубликат нода также может отдавать сегменты. (есть балансировка между нодом и дубликатом, т.е. на них поступает равное кол-во запросов)

Преимущества:
Нет проблемы горячих видео, т.к. оно размазано по всем серверам.
Можно горизонтально добавлять ноды до бесконечности

На всякий пожарный приложу картинку

Какие на ваш взгляд недостатки у данной схемы?

Спасибо
e310d691440a4d63b08e84d74738d971.jpg
  • Вопрос задан
  • 2329 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
vvpoloskin
@vvpoloskin
Инженер связи
Раскритиковать так раскритиковать) Почему так не сделали до тебя.
  1. При выпадении пары нод вы получаете глюк по ВСЕМУ имеющемуся контенту.
  2. При работе с CDN тебе надо будет либо переходить на классическую систему с одним сервером (мб с резервом), либо тащить все созданные тобой ноды в другую точку мира. Тебе ведь захочется быть ближе к клиенту?
  3. Каждые 10 сек будут создаваться новое TCP-соединение с другим сервером, будет (ли?) закрываться старое, keepalive ты уже не сделаешь, в udp-передавать стремно. В результате будешь получать микросекундные задержки при переключении кусочка.
  4. Заливка и хранение контента - отдельная песня. Придется хранить весь контент на всех серверах. И синхронизировать их через торенты.
  5. Представь - высоконагруженные железки, каждый момент обращение к абсолютно произвольному сегменту памяти. В случае хранения на одной железке, доступ к контенту был более предсказуем в рамках одной машины

Идея прикольна, но уже есть более интересные реализации для этих целей - распределенные файловые системы (если все оборудование находится относительно близко) или CDN (если далеко)
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
От себя добавлю что на мой взгляд нужно более интеллектуально подходить к вопросу "горячих" и "холодных" видео. Хотя конечно от проекта зависит очень сильно.
Ребята из erlyvideo рассказывали что ~80% трафика на карамба.тв это трафик приходящийся на ролик в первые сутки после его выкладки. Т.е реально горячее видео расклыдавается полными дублями на N серверов для быстрой отдачи. Все остальное хранится условно с обычными резервированием.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы