Post on 07-Jul-2015
description
Стриминг видеофайлов
• Пользователь хочет посмотреть видео• Надо показать ему в реальном времени
• Пользователь хочет управлять просмотром• Уникальные данные для каждого пользователя• Для каждого из 10 000 пользователей онлайн
Sunday, October 27, 13
Седая древность в IPTV
• Constant bitrate
• каждая секунда — фиксированное количество байт
• легкая перемотка и т.п.• планирование capacity сервиса (на всех 50 абонентов)
• многие так живут до сих пор
Sunday, October 27, 13
Хайтек от IPTV (RTSP)
• Контроль по TCP с поддержкой реконнекта
• Данные по UDP с возможностью ретрансмита
• Энтерпрайзно и неподъёмно• Доживает свой век у 3G операторов
Sunday, October 27, 13
Псевдостриминг
• variable bitrate в видео и аудио
• примитивный flv контейнер и ещё примитивнее flash player
• mod_flv в nginx — основное средство вещания
• никакого мультибитрейта или мультиязыка• примитивное управление проигрыванием• популярно и сегодня (весь «html5 video»)
Sunday, October 27, 13
Хайтек от Адоби (RTMP)
• Закрытый недокументированный протокол• Попытка решить и риалтайм доставку и широковещание
• Сумрачный индусский гений придумал делать уникальный поток для каждого пользователя
• Не получилось ничего• Адоб закрыли программу RTMP, но не все ещё догадались
Sunday, October 27, 13
Потребности сегодня
• FullHD, а следовательно и мультибитрейт
• Выбор языков, субтитров. За что и любим torrents.ru
• Управление проигрыванием (пауза, перемотка и т.п.)
• 3D, больше FPS и т.п.
Sunday, October 27, 13
Возможности сегодня
• Процессоры за 5 лет особо быстрее не стали
• Подешевели 10G линки (до 200 тыс рублей в месяц)
• SSD бегут по планете и спотыкаются об трупы HDD
• Стремительный переход на HTTP стриминг (HDS/HLS)
Sunday, October 27, 13
Экономика проблемы
• 1G линк — 25 000 рублей в месяц
• 10G линк — 200 000 рублей в месяц
• сервер — 10-20 000 рублей в месяц
• каждый сервер требует обслуживания• больше линков, меньше серверов
Sunday, October 27, 13
Цифры при 10G вещании
• 1 мбит/с контент
• 10 000 онлайн пользователей
• 5 000 запросов в секунду за 200 Кб сегментами
• ощущаются проседания на международных каналах
Sunday, October 27, 13
Проблемы с железом
• дисковая подсистема• сетевая подсистема• процессор• память
Sunday, October 27, 13
Память
• Под кеш всё равно не хватит
• LRU пищит и всё портит
• Изредка влезает самый свежак, но всё ломает LRU
• 32 Гб за глаза хватает под сетевые буферы
Sunday, October 27, 13
Процессор
• Хватит масштабироваться, работать надо• Гигагерцы лучше ядер
• Одного процессора хватает для чтения, перепаковки, посылки и учета пользователей на 10 Гбит/с
Sunday, October 27, 13
Сеть
• Intel, как будто бы есть другие варианты
• Самые свежие драйвера• Балансировка прерываний по ядрам
Sunday, October 27, 13
Диски
• Основная нагруженная часть• 10 Гбит без SSD не потянуть, но HDD дешевле
• Лучше меньше да больше: у SSD есть предел скорости
• Аппаратные рейды оставьте продавцам
• Спасибо Unix за удобное управление очередью диска
Sunday, October 27, 13
Проблемы с софтом
• Псевдостриминг дает перерасход трафика до 30%
• Для переключения контента нужен стриминг, причем HTTP
• HDS/HLS для флеш-плеера и остальных
• Предсегментация ломает префетч и перерасходует диск• Сегментация на лету — вариант
Sunday, October 27, 13
Выбранные решения
• JBOD HDD для хранения контента
• или HTTP сетевое хранилище (Swift)
• SSD для промежуточного кеша
• старые новые рекомендации по упаковке mp4
• сегментация на лету• постоянный самоконтроль
Sunday, October 27, 13
Flussonic(эрливидео)
• Быстрое mp4 чтение: распаковка индекса только на лету
• Никакого покадрового чтения: только GOP
• Агрегация дисковых запросов• Контроль за использованием ресурсов
Sunday, October 27, 13
Дисковое чтение
• Открытый файл держит в памяти весь moov (индекс данных)
• У каждого файла плавающий пул воркеров на чтение
• Все воркеры проходят через единую очередь чтения с диска
• На любом запросе может прийти HTTP 503 Overloaded
Sunday, October 27, 13
Нерешенные проблемы
• Правильное вычисление дискового устройства по имени файла• Автобалансировка между HDD при чтении одного файла
• Кластерная балансировка пользователей• 40G
Sunday, October 27, 13
Резюме
• Вещание более 2G с сервера стало рентабельным
• Старые техники не годятся, нужны новые (HTTP стриминг, SSD)
• Новые подходы есть, отлажены и пинают трупы старых
• Важно не только работать, но и не перерабатывать• Flussonic (эрливидео) прекрасно справляется
Sunday, October 27, 13
Вопросы?
Макс Лапшинmax@flussonic.com
Sunday, October 27, 13