Платформа для видео сроком в квартал. Александр Тоболь.
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 4,114 views

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

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

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

Statistics

Views

Total Views
4,114
Views on SlideShare
3,933
Embed Views
181

Actions

Likes
1
Downloads
4
Comments
0

1 Embed 181

https://twitter.com 181

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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