Слайд 2НетСтрим (http://netstream.ru/)
Содержание
Обзор существующих решений.
Разработка своего решения (pyFMS): выбор архитектуры, основные проблемы и
![НетСтрим (http://netstream.ru/) Содержание Обзор существующих решений. Разработка своего решения (pyFMS): выбор архитектуры,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-1.jpg)
пути их решения.
Борьба за качество: ретрансляция.
Полученные количественные характеристики.
Слайд 3НетСтрим (http://netstream.ru/)
Общая схема RTMP
RTMP:
симметричный;
проприетарный;
закрытый.
Возможности:
удаленный вызов процедур (RPC);
управление пропускной способностью;
работа с аудио-видео потоками
![НетСтрим (http://netstream.ru/) Общая схема RTMP RTMP: симметричный; проприетарный; закрытый. Возможности: удаленный вызов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-2.jpg)
(просмотр и запись).
Клиент (Flash)
Сервер RTMP
RTMP
Слайд 4НетСтрим (http://netstream.ru/)
Существующие решения
Коммерческие:
Adobe Flash Media Server (FMS);
Wowza Media Server Pro.
Свободное ПО:
Red5 (http://osflash.org/red5/);
Milenia
![НетСтрим (http://netstream.ru/) Существующие решения Коммерческие: Adobe Flash Media Server (FMS); Wowza Media](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-3.jpg)
Grafter (http://milgra.com/);
…
Слайд 5НетСтрим (http://netstream.ru/)
Архитектура сетевого сервера
Много процессов.
Много нитей.
Один поток (асинхронный ввод-вывод).
Комбинированный: асинхронный в/в +
![НетСтрим (http://netstream.ru/) Архитектура сетевого сервера Много процессов. Много нитей. Один поток (асинхронный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-4.jpg)
много нитей/процессов.
Слайд 6НетСтрим (http://netstream.ru/)
Концепция нашего решения
Простота:
не будем реализовывать ничего лишнего;
простая архитектура - один поток
![НетСтрим (http://netstream.ru/) Концепция нашего решения Простота: не будем реализовывать ничего лишнего; простая](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-5.jpg)
выполнения.
Python:
нам хорошо знаком;
Twisted Framework;
готовые модули: pyAMF.
Слайд 7НетСтрим (http://netstream.ru/)
Twisted Framework
Концепция отложенного выполнения (Deferred).
Переносимый асинхронный ввод-вывод (reactor).
Реализация большого числа базовых
![НетСтрим (http://netstream.ru/) Twisted Framework Концепция отложенного выполнения (Deferred). Переносимый асинхронный ввод-вывод (reactor).](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-6.jpg)
протоколов (HTTP, DNS, Telnet, и т.п.)
Слайд 8НетСтрим (http://netstream.ru/)
Архитектура pyFMS
![НетСтрим (http://netstream.ru/) Архитектура pyFMS](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-7.jpg)
Слайд 9НетСтрим (http://netstream.ru/)
Схема вещания
API
Клиент
pyFMS
Сайт (API)
Сбор и
анализ
статистики
![НетСтрим (http://netstream.ru/) Схема вещания API Клиент pyFMS Сайт (API) Сбор и анализ статистики](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-8.jpg)
Слайд 10НетСтрим (http://netstream.ru/)
Эффективность реализации
Python – интерпретируемый ЯП
прозрачная сложность операций;
легкое расширение с помощью модулей
![НетСтрим (http://netstream.ru/) Эффективность реализации Python – интерпретируемый ЯП прозрачная сложность операций; легкое](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-9.jpg)
на С.
Для увеличения производительности в два раза достаточно было:
переписать 5% кода на Python;
написать один модуль на C (около 1000 строк кода).
Слайд 11НетСтрим (http://netstream.ru/)
Ретрансляция
Вещание на 10 000 клиентов? Легко!
pyFMS 1
pyFMS 2
pyFMS 3
pyFMS 4
Источник вещания
Ретрансляторы
Клиенты
![НетСтрим (http://netstream.ru/) Ретрансляция Вещание на 10 000 клиентов? Легко! pyFMS 1 pyFMS](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-10.jpg)
Слайд 12НетСтрим (http://netstream.ru/)
Количественные характеристики
На один процесс (одно ядро
процессора):
10 тыс. соединений без потока
![НетСтрим (http://netstream.ru/) Количественные характеристики На один процесс (одно ядро процессора): 10 тыс.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/402864/slide-11.jpg)
вещания;
Вещание: в среднем 100 Мбит/с, пик 140 Мбит/с; примерно соответствует 700-900 человек, которые смотрят вещание.
Ретрансляция позволяет наращивать мощность практически неограниченно.