A talk from jokerconf.com conference. "Video Platform in 3 months. Delivered." by Alexander Tobol.
Доклад не затронет какую-то особенную технологию или волшебный алгоритм. Речь пойдет о том, как чуть больше чем за квартал совсем небольшая команда перезапустила работающий в режиме 24/7 совсем немаленький видео-сервис на Одноклассниках на написанной с нуля платформе, развернутой на парке из свыше 200 серверов, распределенных между несколькими центрами обмена данными.
Я бы хотел поделиться успехами и неудачами в ходе решения задачи по обеспечению бесперебойных загрузки, трансформации, хранения, раздачи видео и мониторинга, а также остановиться на особенностях, связанных с нагрузкой в 1000 просмотров в секунду, размером ежедневной аудитории в 8 миллионов географически распределенных в и за пределами РФ. Я также остановлюсь на некоторых использованных нами технологиях.
6. Аудитория и Объемы
8 млн уникальных смотрителей в день
50 млн просмотров в день
16 млн классов в день
50 тысяч загрузок видео в день
6
7. Видео в цифрах
28 млн роликов в базе
Исходящий трафик до 80 Гб/сек
Загружается 5 ТБ видео в день
Входящий трафик до 2 Гб/сек
Сохраняем 3 * 2 ТБ в день
7
8. Наш видео парк
Хранилище – 70 серверов, 5 ПБ
DB + Cache – 30 серверов
Трансформация – 60 серверов
Раздача и загрузка – 30 серверов
8
9. С чего все началось
• Решили делать видео на
ОК в 2011
• Запустили на
платформе сервиса
Видео@mail.ru
• А сервис стал расти…
9
10. Новые требования – новая платформа
• Надежность
• Возобновляемая
загрузка видео
• Воспроизведение видео
с любого момента
времени
• Поддержка мобильных
устройств
• Эксплуатация - любовь к
Java
10
19. Трансформация
Требования:
• Преобразование видео в
унифицированный формат
(воспроизведение на разных
браузерах и платформах)
temp
storage
• Поддержать 4 качества
видео
• Отказоустройчивость и
масштабируемость
transformation
server
persistent
storage
29. Раздача контента
Требования:
• Отдача видео с любого момента времени или
смещения
• Высокая нагрузка ~150Gbps
• Отказоустройчивость
download
server
persistent
storage
31. Video pseudo-streaming
data1
data2
data m
v0 a0
v1 a1
vm am
vN aN
start time
parameter
in the
request
URL
MOOV
MOOV
data N
data m
HTTP
byterange
request
data N
data m
data N
31
36. Решение для кэширования
Большие объемы (~100Gb)
+
Не оказывает влияния на GC
= Off-heap memory
Варианты решения
• Native код
• Direct ByteBuffer
• Memory-mapped files
• Unsafe + shared memory
36
37. Раздача – результат
80%
download
eth
2 x 10 Gbps
20%
eth
RAM – 96Gb
4 x 1 Gbps
persistent
storage
SSD - 4Tb
37
Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz
39. Video pseudo-streaming
MOOV atom
data1
data2
data m
data N
Fast start
v0 a0
v1 a1
vm am
vN aN
start time
parameter
in the
request
URL
MOOV
data m
HTTP
byterange
request
data N
data m
data N
mp4parser
39
41. Основный вехи
октябрь 2010
январь 2011
2011 - 2012
июнь 2012
Первый комит
Запуск на платформе
видео@mail.ru
Запуск с видео Rutube + Youtube
Загрузка пользовательского видео
в платформу видео@mail.ru
январь 2013
Первое упоминание о своей видео
платформе
май 2013
Платформа видео запущена
41
43. Технологии и видео конвейер
Apache Tomcat
OBS
Zookeeper
upload
server
one-nio
download
server
temp
storage
OBS
persistent
storage
ffmpeg
transformation
server
44. Результаты
• Работоспособность сервиса при отказе одного ДЦ
• Возобновление загрузки видео в течение 12 часов
• Просмотр видео с любого момента времени во Flash и
HTML5
• Высокопроизводительная раздача до 20Gbps с
сервера
• Поддержка видео на мобильных устройствах
44