Добрый день,
Есть схема доставки видео (по протоколу 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 качество), затем запрос потупает на второй нод, оттуда берется сегмент, потом с третьего и т.д.
В случае "проседания" сети на ноде, он отдает сегменты в низком битрейте.
Дубликат нода также может отдавать сегменты. (есть балансировка между нодом и дубликатом, т.е. на них поступает равное кол-во запросов)
Преимущества:
Нет проблемы горячих видео, т.к. оно размазано по всем серверам.
Можно горизонтально добавлять ноды до бесконечности
На всякий пожарный приложу картинку
Какие на ваш взгляд недостатки у данной схемы?
Спасибо