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

4,930 views
4,774 views

Published on

A talk from jokerconf.com conference. "Video Platform in 3 months. Delivered." by Alexander Tobol.

Доклад не затронет какую-то особенную технологию или волшебный алгоритм. Речь пойдет о том, как чуть больше чем за квартал совсем небольшая команда перезапустила работающий в режиме 24/7 совсем немаленький видео-сервис на Одноклассниках на написанной с нуля платформе, развернутой на парке из свыше 200 серверов, распределенных между несколькими центрами обмена данными.
Я бы хотел поделиться успехами и неудачами в ходе решения задачи по обеспечению бесперебойных загрузки, трансформации, хранения, раздачи видео и мониторинга, а также остановиться на особенностях, связанных с нагрузкой в 1000 просмотров в секунду, размером ежедневной аудитории в 8 миллионов географически распределенных в и за пределами РФ. Я также остановлюсь на некоторых использованных нами технологиях.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,930
On SlideShare
0
From Embeds
0
Number of Embeds
479
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Платформа для видео сроком в квартал Александр Тоболь инженер-программист проекта Одноклассники
  2. 2. Видео на Одноклассниках 2
  3. 3. Видео на Одноклассниках 3
  4. 4. Видео на Одноклассниках 4
  5. 5. Видео на Одноклассниках 5
  6. 6. Аудитория и Объемы 8 млн уникальных смотрителей в день 50 млн просмотров в день 16 млн классов в день 50 тысяч загрузок видео в день 6
  7. 7. Видео в цифрах 28 млн роликов в базе Исходящий трафик до 80 Гб/сек Загружается 5 ТБ видео в день Входящий трафик до 2 Гб/сек Сохраняем 3 * 2 ТБ в день 7
  8. 8. Наш видео парк Хранилище – 70 серверов, 5 ПБ DB + Cache – 30 серверов Трансформация – 60 серверов Раздача и загрузка – 30 серверов 8
  9. 9. С чего все началось • Решили делать видео на ОК в 2011 • Запустили на платформе сервиса Видео@mail.ru • А сервис стал расти… 9
  10. 10. Новые требования – новая платформа • Надежность • Возобновляемая загрузка видео • Воспроизведение видео с любого момента времени • Поддержка мобильных устройств • Эксплуатация - любовь к Java 10
  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 16
  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 • Поддержать 4 качества видео • Отказоустройчивость и масштабируемость transformation server 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 22
  23. 23. Очередь на транскодирование Transform server 1 upload server temp storage Transform server 2 Leader Transform server N candidate 1 candidate 2 23 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 25
  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 27
  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 30
  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 31
  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) 33
  34. 34. Архитектура раздачи persistent storage download server Segment 256Kb 1-й уровень RAM - 96GB 2-й уровень SSD - 4TB 34
  35. 35. Требование к кэшу download server persistent storage требования ~100GB 1-й уровень RAM - 96GB GC tolerance решение ??? LRU 10k/sec persistence 2-й уровень SSD - 4TB ~TB FIFO OBS 35
  36. 36. Решение для кэширования Большие объемы (~100Gb) + Не оказывает влияния на GC = Off-heap memory Варианты решения • Native код • Direct ByteBuffer • Memory-mapped files • Unsafe + shared memory 36
  37. 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
  38. 38. Балансировка раздачи node_2 node_1 node_3 pKr0 persistent storage p0r1 pKr1 p0r0 pKr2 node_N p0r2 node_4 38
  39. 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
  40. 40. Видео стримминг с Марса Август 2012 • 40 Nginx сереров запущенных Amazon EC2 • Тестовая нагрузка ~25Gbps • Отключение серверов • 30 серверов - 25Gbps • 20 серверов - 12Gbps 40
  41. 41. Основный вехи октябрь 2010 январь 2011 2011 - 2012 июнь 2012 Первый комит Запуск на платформе видео@mail.ru Запуск с видео Rutube + Youtube Загрузка пользовательского видео в платформу видео@mail.ru январь 2013 Первое упоминание о своей видео платформе май 2013 Платформа видео запущена 41
  42. 42. Технологии Java one-nio mp4parser Zookeeper Cassandra OBS Apache Tomcat ffmpeg 42
  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 • Высокопроизводительная раздача до 20Gbps с сервера • Поддержка видео на мобильных устройствах 44
  45. 45. Осталось доделать • HTML5 плеер • «Левые» кодеки • Получение метаданных видео (GPS, например) 45
  46. 46. Спасибо! Контакты Alexander.tobol@odnoklassniki.ru www.odnoklassniki.ru/alatobol hr@odnoklassniki.ru

×