HighLoad++ 2017. Архитектуры/масштабируемость, бекенд, enterprise-системы

ВІДЕОУРОК № 16. Пишем свой протокол поверх UDP или платформа потокового видео с нуля на миллион онлайнов

Пишем свой протокол стриминга с гарантированной задержкой поверх UDP. Архитектура отказоустойчивого стриминг-сервиса, способного выдержать потерю дата-центра и миллион онлайнов. Проблемы мобильного стриминга и TCP-протокола, QUIC как замена TCP, UDP и fast retransmit, forward error correction (FEC), задержка или потеря пакетов, приоритезация потоков, шифрование и многое другое. Сервис Видео в Одноклассниках – вторая площадка в Рунете по просмотрам видео, ежедневно мы фиксируем свыше 400 миллионов просмотров видео. Технический прогресс позволил пользователям вести трансляции со своих смартфонов и интерактивно общаться с пользователями в прямом эфире – появились такие мобильные приложения, как Periscope, Insta Live и стриминговое приложение Одноклассников OK Live. Новый способ генерации контента предложил нам новые технологические вызовы: * гарантировать задержку между стримером и зрителями на динамично меняющемся мобильном Интернет-канале; * обеспечить непрерывный стриминг даже при потере части оборудования; * сбалансировать нагрузку на раздающие сервера во время популярных, например, спортивных трансляций. Мы поделимся опытом построения масштабируемого отказоустойчивого сервиса видеостриминга, расскажем про его архитектуру, которая выдерживает тысячи стримов online и миллионы зрителей. В ходе доклада: * отвечу на вопрос, как оптимизировать задержку трансляции до времени, сравнимого с p2p-видеоконференцией; * расскажу про протоколы hls, dash, rtmp, webrtc; * настройка кодеков на клиенте и транскодере для минимизации задержки; * расскажу о проблемах гарантии задержки на TCP и тем, как мы пришли к собственному протоколу стриминга поверх UDP с гарантированной задержкой доставки видео зрителям; * свой UDP-протокол: измерение MTU, pacer, шифрование с потерей пакетов, fast retransmite; * простые способы FEC не работают и google в QUIC его отключили. Результатом нашей работы стал запуск первого в мире приложение на Android, способного стримить в FullHD (1080p) в мобильных сетях.