46
Платформа для видео сроком в квартал Александр Тоболь инженер-программист проекта Одноклассники

Платформа для видео сроком в квартал. Александр Тоболь

Embed Size (px)

DESCRIPTION

A talk from jokerconf.com conference. "Video Platform in 3 months. Delivered." by Alexander Tobol. Доклад не затронет какую-то особенную технологию или волшебный алгоритм. Речь пойдет о том, как чуть больше чем за квартал совсем небольшая команда перезапустила работающий в режиме 24/7 совсем немаленький видео-сервис на Одноклассниках на написанной с нуля платформе, развернутой на парке из свыше 200 серверов, распределенных между несколькими центрами обмена данными. Я бы хотел поделиться успехами и неудачами в ходе решения задачи по обеспечению бесперебойных загрузки, трансформации, хранения, раздачи видео и мониторинга, а также остановиться на особенностях, связанных с нагрузкой в 1000 просмотров в секунду, размером ежедневной аудитории в 8 миллионов географически распределенных в и за пределами РФ. Я также остановлюсь на некоторых использованных нами технологиях.

Citation preview

Page 1: Платформа для видео сроком в квартал. Александр Тоболь

Платформа для видео сроком в квартал

Александр Тоболь

инженер-программистпроекта Одноклассники

Page 2: Платформа для видео сроком в квартал. Александр Тоболь

2

Видео на Одноклассниках

Page 3: Платформа для видео сроком в квартал. Александр Тоболь

3

Видео на Одноклассниках

Page 4: Платформа для видео сроком в квартал. Александр Тоболь

4

Видео на Одноклассниках

Page 5: Платформа для видео сроком в квартал. Александр Тоболь

5

Видео на Одноклассниках

Page 6: Платформа для видео сроком в квартал. Александр Тоболь

Аудитория и Объемы

6

8 млн уникальных смотрителей в день

50 млн просмотров в день

16 млн классов в день

50 тысяч загрузок видео в день

Page 7: Платформа для видео сроком в квартал. Александр Тоболь

Видео в цифрах

7

28 млн роликов в базе

Исходящий трафик до 80 Гб/сек

Входящий трафик до 2 Гб/сек

Загружается 5 ТБ видео в день

Сохраняем 3 * 2 ТБ в день

Page 8: Платформа для видео сроком в квартал. Александр Тоболь

Наш видео парк

8

Хранилище – 70 серверов, 5 ПБ

Раздача и загрузка – 30 серверов

DB + Cache – 30 серверов

Трансформация – 60 серверов

Page 9: Платформа для видео сроком в квартал. Александр Тоболь

С чего все началось

9

• Решили делать видео на ОК в 2011

• Запустили на платформе сервиса Видео@mail.ru

• А сервис стал расти…

Page 10: Платформа для видео сроком в квартал. Александр Тоболь

Новые требования – новая платформа

10

• Надежность

• Возобновляемая загрузка видео

• Воспроизведение видео с любого момента времени

• Поддержка мобильных устройств

• Эксплуатация - любовь к Java

Page 11: Платформа для видео сроком в квартал. Александр Тоболь

Видео изнутри

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Page 12: Платформа для видео сроком в квартал. Александр Тоболь

Загрузка

tempstorage

uploadserver

Требования:

• Возобновляемая загрузка видео

• Отказоустройчивость при потере сервера или ДЦ

• Гарантия обработки видео после загрузки

Page 13: Платформа для видео сроком в квартал. Александр Тоболь

Загрузка. БалансировкаDNS-GSLB

ДЦ 3

ДЦ 1

ДЦ 2

LVSvu.mycdn.me

ip1

LVS ip2LVS ip3

Page 14: Платформа для видео сроком в квартал. Александр Тоболь

Загрузка. БалансировкаDNS-GSLB

ДЦ 3

ДЦ 1

ДЦ 2

LVSvu.mycdn.me

ip1

LVS ip2LVS ip3

Page 15: Платформа для видео сроком в квартал. Александр Тоболь

Загрузка. БалансировкаDNS-GSLB

ДЦ 3

ДЦ 1

ДЦ 2

LVSvu.mycdn.me

ip1

LVS ip2LVS ip3

Page 16: Платформа для видео сроком в квартал. Александр Тоболь

Распределенная загрузка

16

ДЦ 1

ДЦ 2

ДЦ 3

tempstorage

tempstorage

tempstorage

Page 17: Платформа для видео сроком в квартал. Александр Тоболь

Failover загрузка

17

ДЦ 1

ДЦ 2

ДЦ 3

tempstorage

tempstorage

tempstorage

Last-known-byte

Page 18: Платформа для видео сроком в квартал. Александр Тоболь

Видео конвейер

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Page 19: Платформа для видео сроком в квартал. Александр Тоболь

Трансформация

tempstorage

persistentstorage

transformationserver

Требования:

• Преобразование видео в унифицированный формат(воспроизведение на разных браузерах и платформах)

• Поддержать 4 качества видео

• Отказоустройчивость и масштабируемость

Page 20: Платформа для видео сроком в квартал. Александр Тоболь

Выбор формата видео

Page 21: Платформа для видео сроком в квартал. Александр Тоболь

Внутренний формат видео

MP4

H.264

AAC

FLV

H.263

MP3

WebM

VP8

Vorbis MP3

Page 22: Платформа для видео сроком в квартал. Александр Тоболь

Очередь на транскодирование

22

tempstorage

Transformationqueue

Transform server 1

Transform server 2

Transform server N

uploadserver

Page 23: Платформа для видео сроком в квартал. Александр Тоболь

Zookeeper23

Leader

candidate 2candidate 1

tempstorage

Transform server 1

Transform server 2

Transform server N

Очередь на транскодирование

uploadserver

Page 24: Платформа для видео сроком в квартал. Александр Тоболь

24

Ex-Leader

candidate 2candidate 1Leader

Zookeeper24

tempstorage

Transform server 1

Transform server 2

Transform server N

uploadserver

Очередь на транскодирование

Page 25: Платформа для видео сроком в квартал. Александр Тоболь

Трансформация видео

25

ДЦ N

tempstorage

Transformation queue

Transformationserver

ДЦ 1ДЦ 2ДЦ 3

persistent storage

ffmpegmp4parser

ДЦ 1ДЦ 2ДЦ 3

MP4, H.264, ACC

426x240640x360853x480

1280x720+preview

Page 26: Платформа для видео сроком в квартал. Александр Тоболь

Трансформация. Коррекция длины

26

15% видео требуют коррекции

Page 27: Платформа для видео сроком в квартал. Александр Тоболь

27

70 серверов x 36 дисков * 2 Tб ~ 5 Пт

ДЦ 1

storage1

storage2

storageN

Zookeeper

ДЦ K

storageN+1

storageN+2

storageN+M

OBSOBS

transformationserver

Хранение видео

Page 28: Платформа для видео сроком в квартал. Александр Тоболь

Процесс обработки видео

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Page 29: Платформа для видео сроком в квартал. Александр Тоболь

Раздача контента

persistentstorage

downloadserver

Требования:

• Отдача видео с любого момента времени или смещения

• Высокая нагрузка ~150Gbps

• Отказоустройчивость

Page 30: Платформа для видео сроком в квартал. Александр Тоболь

Seek. Video pseudo-streaming

30

Header data1 data2 data N

v1 a1 vN aNv0 a06 Mb

data m

vm am

Page 31: Платформа для видео сроком в квартал. Александр Тоболь

Video pseudo-streaming

31

MOOVdata1 data2 data N

v1 a1 vN aNv0 a0

data m

vm am

data N data m

HTTP byte-range

request

start time parameter

in the request

URL

MOOV data N data m

Page 32: Платформа для видео сроком в квартал. Александр Тоболь

Video pseudo-streaming

32

MOOV data1 data2 data N

v1 a1 vN aNv0 a0Fast start

data m

vm am

data N data m

HTTP byte-range

request

start time parameter

in the request

URL

MOOV data N data m

Page 33: Платформа для видео сроком в квартал. Александр Тоболь

Раздача контента

33

Уточнение требований:

• Псевдо-стримминг

• Кэширование только просмотренной части видео

Решение:

• Кэшировать видео сегментами по 256Кб

• Java (off-heap, shared memory, nio)

Page 34: Платформа для видео сроком в квартал. Александр Тоболь

Архитектура раздачи

downloadserver

persistent storage

RAM - 96GB

SSD - 4TB

34

1-й уровень

2-й уровень

Segment256Kb

Page 35: Платформа для видео сроком в квартал. Александр Тоболь

Требование к кэшу

downloadserver

persistent storage

RAM - 96GB

SSD - 4TB

~100GBGC tolerance

LRU10k/sec

persistence

~TBFIFO

???

OBS

35

1-й уровень

2-й уровень

требования решение

Page 36: Платформа для видео сроком в квартал. Александр Тоболь

Решение для кэширования

36

Большие объемы (~100Gb)

+

Не оказывает влияния на GC

= Off-heap memory

• Native код

• Direct ByteBuffer

• Memory-mapped files

• Unsafe + shared memory

Варианты решения

Page 37: Платформа для видео сроком в квартал. Александр Тоболь

Раздача – результат

37

download

persistent storage

RAM – 96Gb

SSD - 4Tb

eth4 x 1 Gbpseth

2 x 10 Gbps

80%

20%

Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz

Page 38: Платформа для видео сроком в квартал. Александр Тоболь

Балансировка раздачи

38

node_1

persistent storage

node_2

node_3

node_4node_N

p0r0

p0r1

p0r2

pKr0

pKr1

pKr2

Page 39: Платформа для видео сроком в квартал. Александр Тоболь

Video pseudo-streaming

39

MOOV atom data1 data2 data N

v1 a1 vN aNv0 a0Fast start

data m

vm am

data N data m

HTTP byte-range

request

start time parameter

in the request

URL

MOOV data N data m

mp4parser

Page 40: Платформа для видео сроком в квартал. Александр Тоболь

Видео стримминг с Марса

40

Август 2012

• 40 Nginx сереров запущенных Amazon EC2

• Тестовая нагрузка ~25Gbps

• Отключение серверов

• 30 серверов - 25Gbps

• 20 серверов - 12Gbps

Page 41: Платформа для видео сроком в квартал. Александр Тоболь

Основный вехи

41

октябрь 2010 Первый комит

январь 2011 Запуск на платформе видео@mail.ru

2011 - 2012 Запуск с видео Rutube + Youtube

июнь 2012 Загрузка пользовательского видео в платформу видео@mail.ru

январь 2013 Первое упоминание о своей видео платформе

май 2013 Платформа видео запущена

Page 42: Платформа для видео сроком в квартал. Александр Тоболь

JavaТехнологии

42

Cassandra

OBS

ffmpeg

one-nio

ZookeeperApache Tomcat

mp4parser

Page 43: Платформа для видео сроком в квартал. Александр Тоболь

Технологии и видео конвейер

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Apache Tomcat OBS

Zookeeperffmpeg

OBSone-nio

Page 44: Платформа для видео сроком в квартал. Александр Тоболь

Результаты

44

• Работоспособность сервиса при отказе одного ДЦ

• Возобновление загрузки видео в течение 12 часов

• Просмотр видео с любого момента времени во Flash и

HTML5

• Высокопроизводительная раздача до 20Gbps с

сервера

• Поддержка видео на мобильных устройствах

Page 45: Платформа для видео сроком в квартал. Александр Тоболь

45

Осталось доделать

• HTML5 плеер

• «Левые» кодеки

• Получение метаданных видео (GPS, например)

Page 46: Платформа для видео сроком в квартал. Александр Тоболь

Спасибо!

Контакты[email protected]/alatobol

[email protected]