Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Платформа сроком в
квартал
Александр Тоболь
Инженер-программист
Одноклассники
Видео на Одноклассниках
Видео на Одноклассниках
Видео на Одноклассниках
Видео на Одноклассниках
Аудитория и объемы
10 млн уникальных смотрителей в день
60 млн просмотров в день
20 млн классов в день
50 тысяч загрузок в...
Видео в цифрах
30 млн роликов в базе
Исходящий трафик до 100 Гб/сек
Загружается 5 ТБ видео в день
Входящий трафик до 2 Гб/...
Наш видео парк
Хранилище – 70 серверов, 5 ПБ
DB + Cache – 30 серверов
Трансформация – 60 серверов
Раздача и загрузка – 30 ...
C чего все началось
• Решили делать видео на ОК в
2011
• Запустили на платформе
сервиса Видео@mail.ru
• А сервис стал раст...
Новые требования – новая платформа
• Надежность
• Возобновляемая загрузка
видео
• Воспроизведение видео с
любого момента в...
Видео изнутри

upload
server

temp
storage

transformation
server

download
server

persistent
storage
Загрузка

upload
server

temp
storage

Требования:
•Возобновляемая загрузка видео
•Отказоустройчивость при потере сервера ...
Загрузка. Балансировка
DNS-GSLB

ДЦ 1
LVS

vu.mycdn.me

ДЦ 3
LVS

ip1

ДЦ 2
ip3

LVS

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

ДЦ 1
LVS

vu.mycdn.me

ДЦ 3
LVS

ip1

ДЦ 2
ip3

LVS

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

ДЦ 1
LVS

vu.mycdn.me

ДЦ 3
LVS

ip1

ДЦ 2
ip3

LVS

ip2
Распределенная загрузка
ДЦ 1
ДЦ 3
temp
storage

ДЦ 2

temp
storage

temp
storage
Failover загрузка
ДЦ 1
ДЦ 3
temp
storage

ДЦ 2

Last-known-byte

temp
storage

temp
storage
17
Видео конвейер

upload
server

temp
storage

transformation
server

download
server

persistent
storage
Трансформация
Требования:
•Преобразование видео в
унифицированный формат
(воспроизведение на разных браузерах
и платформах...
Выбор формата видео
Внутренний формат видео

FLV

MP4

WebM

H.263

H.264

VP8

MP3

AAC

Vorbis MP3
Очередь на транскодирование
Transform
server 1

upload
server

temp
storage
Transform
server 2

Transformation
queue
Trans...
Очередь на транскодирование
Transform
server 1

upload
server

temp
storage
Transform
server 2

Leader
Transform
server N
...
Очередь на транскодирование
Transform
server 1

upload
server

temp
storage
Transform
server 2

Ex-Leader
Transform
server...
Трансформация видео
ДЦ 1
ДЦ 2
ДЦ 3

ДЦ 1
ДЦ 2
ДЦ 3

temp
storage

ДЦ N

Transformation
queue

persistent
storage
Transform...
Трансформация. Коррекция длины
15% видео требуют коррекции

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

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

transformation
server

ДЦ 1

OBS

OBS

storage
1

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

upload
server

temp
storage

transformation
server

download
server

persistent
storage
Раздача контента
Требования:
•Отдача видео с любого момента времени или смещения
•Высокая нагрузка ~150Gbps
•Отказоустойчи...
Seek. Video pseudo-streaming

Header

data1

data2

data m

data N

6 Mb

v0 a0

v1 a1

vm am

vN aN
Video pseudo-streaming
data1

data2

data m

v0 a0

v1 a1

vm am

vN aN

start time
parameter
in the
request
URL

MOOV

MO...
Video pseudo-streaming
MOOV

data1

data2

data m

data N

Fast start

v0 a0

v1 a1

vm am

vN aN

start time
parameter
in...
Раздача контента
Уточнение требований:
•Псевдо-стримминг
•Кэширование только просмотренной части видео
Решение:
•Кэшироват...
Архитектура раздачи
persistent
storage

download
server
Segment
256Kb

1-й уровень

RAM - 96GB

2-й уровень

SSD - 4TB
Требование к кэшу

download
server

persistent
storage
требования
~100GB

1-й уровень

RAM - 96GB

GC tolerance

решение
?...
Решение для кэширования
Большие объемы (~100Gb)
+
Не оказывает влияния на GC

= Off-heap memory
Варианты решения

• Native...
Раздача – результат
80%

download

eth
4 x 10 Gbps

20%
eth

RAM – 96Gb

1 x 10 Gbps

persistent
storage

SSD - 4Tb

37

I...
Балансировка раздачи
node_2
node_1

node_3
pKr0

persistent
storage

p0r1
pKr1

p0r0
pKr2

node_N

p0r2

node_4
CDN
node_1 node_2

ДЦ

node_2

node_1

node_N

node_1

node_2

node_3

node_4
Video pseudo-streaming
MOOV atom

data1

data2

data m

data N

Fast start

v0 a0

v1 a1

vm am

vN aN

start time
paramet...
Основный вехи
октябрь 2010
январь 2011
2011 - 2012

Первый комит
Запуск на платформе
видео@mail.ru
Запуск с видео Rutube +...
Технологии

Java

one-nio
mp4parser

Zookeeper

Cassandra

OBS

Apache Tomcat

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

OBS
Zookeeper

upload
server

one-nio

download
server

temp
storage

OBS

pers...
Результаты
• Работоспособность сервиса при отказе одного ДЦ
• Возобновление загрузки видео в течение 12 часов
• Просмотр в...
Осталось доделать
• HTML5 плеер
• «Левые» кодеки
• Использование метаданных исходного видео (GPS, например)
Спасибо!
Видео стримминг с Марса
Август
2012

• 40 Nginx сереров запущенных
Amazon EC2
• Тестовая нагрузка ~25Gbps
• Отключение сер...
Upcoming SlideShare
Loading in …5
×

Александр Тоболь, "Одноклассники"

2,103 views

Published on

HighLoad++ 2013

  • Be the first to comment

Александр Тоболь, "Одноклассники"

  1. 1. Платформа сроком в квартал Александр Тоболь Инженер-программист Одноклассники
  2. 2. Видео на Одноклассниках
  3. 3. Видео на Одноклассниках
  4. 4. Видео на Одноклассниках
  5. 5. Видео на Одноклассниках
  6. 6. Аудитория и объемы 10 млн уникальных смотрителей в день 60 млн просмотров в день 20 млн классов в день 50 тысяч загрузок видео в день 28.10.13 6
  7. 7. Видео в цифрах 30 млн роликов в базе Исходящий трафик до 100 Гб/сек Загружается 5 ТБ видео в день Входящий трафик до 2 Гб/сек Сохраняем 3 * 2 ТБ в день
  8. 8. Наш видео парк Хранилище – 70 серверов, 5 ПБ DB + Cache – 30 серверов Трансформация – 60 серверов Раздача и загрузка – 30 серверов
  9. 9. C чего все началось • Решили делать видео на ОК в 2011 • Запустили на платформе сервиса Видео@mail.ru • А сервис стал расти…
  10. 10. Новые требования – новая платформа • Надежность • Возобновляемая загрузка видео • Воспроизведение видео с любого момента времени • Поддержка мобильных устройств • Эксплуатация - любовь к Java
  11. 11. Видео изнутри upload server temp storage transformation server download server persistent storage
  12. 12. Загрузка upload server temp storage Требования: •Возобновляемая загрузка видео •Отказоустройчивость при потере сервера или ДЦ •Гарантия обработки видео после загрузки
  13. 13. Загрузка. Балансировка DNS-GSLB ДЦ 1 LVS vu.mycdn.me ДЦ 3 LVS ip1 ДЦ 2 ip3 LVS ip2
  14. 14. Загрузка. Балансировка DNS-GSLB ДЦ 1 LVS vu.mycdn.me ДЦ 3 LVS ip1 ДЦ 2 ip3 LVS ip2
  15. 15. Загрузка. Балансировка DNS-GSLB ДЦ 1 LVS vu.mycdn.me ДЦ 3 LVS ip1 ДЦ 2 ip3 LVS ip2
  16. 16. Распределенная загрузка ДЦ 1 ДЦ 3 temp storage ДЦ 2 temp storage temp storage
  17. 17. Failover загрузка ДЦ 1 ДЦ 3 temp storage ДЦ 2 Last-known-byte temp storage temp storage 17
  18. 18. Видео конвейер upload server temp storage transformation server download server persistent storage
  19. 19. Трансформация Требования: •Преобразование видео в унифицированный формат (воспроизведение на разных браузерах и платформах) temp storage transformation server •Поддержать 4 качества видео •Отказоустройчивость и масштабируемость persistent storage
  20. 20. Выбор формата видео
  21. 21. Внутренний формат видео FLV MP4 WebM H.263 H.264 VP8 MP3 AAC Vorbis MP3
  22. 22. Очередь на транскодирование Transform server 1 upload server temp storage Transform server 2 Transformation queue Transform server N
  23. 23. Очередь на транскодирование Transform server 1 upload server temp storage Transform server 2 Leader Transform server N candidate 1 candidate 2 Zookeeper
  24. 24. Очередь на транскодирование Transform server 1 upload server temp storage Transform server 2 Ex-Leader Transform server N candidate 1 Leader candidate 2 24 Zookeeper
  25. 25. Трансформация видео ДЦ 1 ДЦ 2 ДЦ 3 ДЦ 1 ДЦ 2 ДЦ 3 temp storage ДЦ N Transformation queue persistent storage Transformation server ffmpeg mp4parser MP4, H.264, ACC 426x240 640x360 853x480 1280x720 +preview
  26. 26. Трансформация. Коррекция длины 15% видео требуют коррекции 26
  27. 27. Хранение видео 70 серверов x 36 дисков * 2 Tб ~ 5 Пт Zookeeper transformation server ДЦ 1 OBS OBS storage 1 storage 2 storage N storage N+1 storage N+2 ДЦ K storage N+M
  28. 28. Процесс обработки видео upload server temp storage transformation server download server persistent storage
  29. 29. Раздача контента Требования: •Отдача видео с любого момента времени или смещения •Высокая нагрузка ~150Gbps •Отказоустойчивость download server persistent storage
  30. 30. Seek. Video pseudo-streaming Header data1 data2 data m data N 6 Mb v0 a0 v1 a1 vm am vN aN
  31. 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
  32. 32. Video pseudo-streaming MOOV 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 32
  33. 33. Раздача контента Уточнение требований: •Псевдо-стримминг •Кэширование только просмотренной части видео Решение: •Кэшировать видео сегментами по 256Кб •Java (off-heap, shared memory, nio)
  34. 34. Архитектура раздачи persistent storage download server Segment 256Kb 1-й уровень RAM - 96GB 2-й уровень SSD - 4TB
  35. 35. Требование к кэшу download server persistent storage требования ~100GB 1-й уровень RAM - 96GB GC tolerance решение ??? LRU 20k/sec persistence 2-й уровень SSD - 4TB ~TB FIFO OBS
  36. 36. Решение для кэширования Большие объемы (~100Gb) + Не оказывает влияния на GC = Off-heap memory Варианты решения • Native код • Direct ByteBuffer • Memory-mapped files • Unsafe + shared memory
  37. 37. Раздача – результат 80% download eth 4 x 10 Gbps 20% eth RAM – 96Gb 1 x 10 Gbps persistent storage SSD - 4Tb 37 Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz
  38. 38. Балансировка раздачи node_2 node_1 node_3 pKr0 persistent storage p0r1 pKr1 p0r0 pKr2 node_N p0r2 node_4
  39. 39. CDN node_1 node_2 ДЦ node_2 node_1 node_N node_1 node_2 node_3 node_4
  40. 40. 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 mp4parser data m data N
  41. 41. Основный вехи октябрь 2010 январь 2011 2011 - 2012 Первый комит Запуск на платформе видео@mail.ru Запуск с видео Rutube + Youtube июнь 2012 Загрузка пользовательского видео в платформу видео@mail.ru январь 2013 Первое упоминание о своей видео платформе май 2013 Платформа видео запущена 41 41
  42. 42. Технологии Java one-nio mp4parser Zookeeper Cassandra OBS Apache Tomcat ffmpeg
  43. 43. Технологии и видео конвейер Apache Tomcat OBS Zookeeper upload server one-nio download server temp storage OBS persistent storage ffmpeg transformation server
  44. 44. Результаты • Работоспособность сервиса при отказе одного ДЦ • Возобновление загрузки видео в течение 12 часов • Просмотр видео с любого момента времени во Flash и HTML5 • Высокопроизводительная раздача до 30Gbps с сервера • Поддержка видео на мобильных устройствах
  45. 45. Осталось доделать • HTML5 плеер • «Левые» кодеки • Использование метаданных исходного видео (GPS, например)
  46. 46. Спасибо!
  47. 47. Видео стримминг с Марса Август 2012 • 40 Nginx сереров запущенных Amazon EC2 • Тестовая нагрузка ~25Gbps • Отключение серверов • 30 серверов - 25Gbps • 20 серверов - 12Gbps

×