Слайд 1Архитектура
Видеохостинга
От простого
www.jatv.by
К сложному
Слайд 2Скорость подключения к интернет растет не по дням а по часам
www.jatv.by
Европа
- 5,6 Mbs
Северная Америка - 5,53 Mbs
Австралия - 4,42 Mbs
Азия - 3,69 Mbs
Южная Америка - 1,64 Mbs
Африка - 1,03 Mbs
Белорусь - 1.8 Mbs (ByFly 1.6-2.0)
Гомельская область 2.06 Mbs
Минск 2.01 Mbs
Гродненская область 1.25 Mbs
Витебская область 1.03 Mbs
Могилевская область 0.8Mbs
По данным speedtest.net
Слайд 3Новые цифровые форматы все быстрее входят в нашу жизнь
www.jatv.by
Видео
на смену DVD
пришел BlueRay
прыжек от 720x576 до FullHD 1920x1080
Аудио
на смену CD пришел multichannel DTS MA + DolbyTrueHD
44,1KHz 16bit - 96KHz 24bit
Слайд 4Строим видеоресурс за 5 минут
www.jatv.by
Основные функциональные модули
Front-end – взаимодействоие с пользовтелем
Back-end
– обработка информации
Проигрыватель – воспроизведение медиаконтента
Транскодер – конвертация
Хранилище – хранение и доставка контента
Слайд 5Front-end Back-end
www.jatv.by
Платформа
PHP Ruby, Pyton, Java, .Net
Технологии и концепции
Юзабилити
Web 2.0
AJAX
Тесная интеграция Fron-end
и Back-end
Внедрение новых медиа форматов (многоканальный звук)
Загрузка больших файлов (от 1Гб)
Воспроизведение видео
Adobe Flash
Microsoft Silverlight
Слайд 6Медиа проигрыватель
www.jatv.by
Воспроизведение видео файлов
Поддержка списков воспроизведения
Поддержка модулей расширения
Внешнее API позволяющее работать
с плеером
JW FLV Media Player - longtailvideo.com
Flowplayer - flowplayer.org
Слайд 7Транскодер
www.jatv.by
Контейнер != Формат
Контейнер позволяет объединять различные мультимедийные потоки (в большинстве
случаев аудио и видео) в один файл.
Большое количество контейнеров
TS (transport stream), AVI, MP4, OGM, Windows Media
Matroska - самый прогрессивный контейнер
Большое количество кодеков (более 100)
DivX, Xvid, Realmedia, WMV, Mpeg-2
H.264, MPEG-4 Part 10 или AVC - самый перспективный кодек
Слайд 8Выбор кодека для видеохостинга
www.jatv.by
Silverlight
WMV
H.264
Adobe Flash
Flash video
H.264
Хоть здесь не налажали ;-) оба
конкурента поддерживают H264
H264 - промышленный стандарт
Используется в цифровом телевидении высокого разрешения (HDTV) и как основной кодек для видеозаписей Министерством обороны США, компанией Apple и во многих других областях цифрового видео.
Слайд 9Самое дорогое - это время
www.jatv.by
99,8% времени тратится на преобразование исходного материала
в формат понятный браузеру
Способы кодирования
Большая и жирная машина - много CPU (ядер) - очень дорого
Распределенная конвертация - много слабых машин вполне приемлемо
Использование GPU для тяжелых просчетов
нет открытого кодека, последний писк моды ;-)
Слайд 10Хранилище
1=3
www.jatv.by
Храним все видео на HDD (RAID)
стандартная файловая система (много файлов
- много проблем)
ограничение по объему
довольно ненадежно и дорого
трудно масшабируется
Внешние хранилища
большая скорость доступа к данным
очень !!! дорого
очень тяжело масшабируется
Распределенные файловые системы (DFS)
дешево
надежно
хорошо масшабируется
Слайд 11Запуск или хороший Индеец мертвый индеец...
www.jatv.by
Nginx - http сервер нового поколения
легкий
быстрый
множество
модулей (наличие модулей для псевдо стриминга FLV и H.264/AVC)
PHP-FPM
плавный рестарт php без потери запросов, в том числе при обновлении php binary или extensions
запуск php workers с разными uid/gid/chroot/environment
все настройки в одном conf файле
real-time статистика исполнения php запросов
Трансокдер
FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах.
База данных
MySQL
PostgreSQL
MsSQL - это что бы не забывать про Микрософт ;-)
Слайд 12Начало…
www.jatv.by
Простая архитектура
Низкий уровень кода
Приложения не дублируются
Борьба за ресурсы
Слайд 13Разделяй и властвуй
www.jatv.by
Один web сервер
Выделенный сервер для контента и конвертации
Слайд 14Первая кровь
www.jatv.by
Пара web серверов
Используется балансировщик
Выделенный сервер БД
Выделенный сервер для хранения медиа
файлов
Проводится незначительный рефакторинг кода
Слайд 15Зубная боль
www.jatv.by
Используется кеширование в memcache
Процесс записи в приложениях делается медленно
- репликация задерживается либо делается очень долго, начали использовать партиционирование в БД, используется множество хранилищь для контента
Тербуется существенный рефакторинг архитектуры БД
Слайд 16 Болевой шок
www.jatv.by
Основательный рефакторинг системы
Разделение нагрузки от пользователей по какому либо
параметру - логин, страна и тд.
Группы разделенных пользователей обслуживаются отдельными кластерами.
Слайд 17 Боль незначительно усиливается
Используется масштабируемая архитектура для приложений и баз данных
Работа
приложений нас уже полностью устраивает
Легко наращивается производительность
Легко добавляется новая функциональность
Оптимизируется код
Ваше приложение все еще растет но процесс уже довольно хорошо управляется
Слайд 18Terra incognita
www.jatv.by
HDFS
HBase
Map reduce
CUDA
Cloud computing
x264farm
???
Слайд 19Вопросы?
www.jatv.by
dmytrosychevsky@gmail.com
Слайд 20www.jatv.by
Тут надо вставить еще всякие умные слова про то как космические
корабли бороздят просторы Большого Театра... :-)
Web 3.0 Ready