Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых серверов с использованием Twisted презентация

Содержание

НетСтрим (http://netstream.ru/) Содержание Обзор существующих решений. Разработка своего решения (pyFMS): выбор архитектуры, основные проблемы и пути их решения. Борьба за качество: ретрансляция. Полученные количественные характеристики.

Слайд 1Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых серверов с

использованием Twisted

Андрей Смирнов

NetStream


Слайд 2НетСтрим (http://netstream.ru/)
Содержание
Обзор существующих решений.
Разработка своего решения (pyFMS): выбор архитектуры, основные проблемы

и пути их решения.
Борьба за качество: ретрансляция.
Полученные количественные характеристики.

Слайд 3НетСтрим (http://netstream.ru/)
Общая схема RTMP
RTMP:
симметричный;
проприетарный;
закрытый.
Возможности:
удаленный вызов процедур (RPC);
управление пропускной способностью;
работа с аудио-видео

потоками (просмотр и запись).

Клиент (Flash)

Сервер RTMP

RTMP


Слайд 4НетСтрим (http://netstream.ru/)
Существующие решения
Коммерческие:
Adobe Flash Media Server (FMS);
Wowza Media Server Pro.
Свободное ПО:
Red5

(http://osflash.org/red5/);
Milenia Grafter (http://milgra.com/);


Слайд 5НетСтрим (http://netstream.ru/)
Архитектура сетевого сервера
Много процессов.
Много нитей.
Один поток (асинхронный ввод-вывод).
Комбинированный: асинхронный в/в

+ много нитей/процессов.

Слайд 6НетСтрим (http://netstream.ru/)
Концепция нашего решения
Простота:
не будем реализовывать ничего лишнего;
простая архитектура - один

поток выполнения.
Python:
нам хорошо знаком;
Twisted Framework;
готовые модули: pyAMF.

Слайд 7НетСтрим (http://netstream.ru/)
Twisted Framework
Концепция отложенного выполнения (Deferred).
Переносимый асинхронный ввод-вывод (reactor).
Реализация большого числа

базовых протоколов (HTTP, DNS, Telnet, и т.п.)


Слайд 8НетСтрим (http://netstream.ru/)
Архитектура pyFMS


Слайд 9НетСтрим (http://netstream.ru/)
Схема вещания

API
Клиент
pyFMS
Сайт (API)
Сбор и
анализ
статистики


Слайд 10НетСтрим (http://netstream.ru/)
Эффективность реализации
Python – интерпретируемый ЯП
прозрачная сложность операций;
легкое расширение с помощью

модулей на С.
Для увеличения производительности в два раза достаточно было:
переписать 5% кода на Python;
написать один модуль на C (около 1000 строк кода).


Слайд 11НетСтрим (http://netstream.ru/)
Ретрансляция
Вещание на 10 000 клиентов? Легко!

pyFMS 1
pyFMS 2
pyFMS 3
pyFMS 4
Источник

вещания

Ретрансляторы

Клиенты вещания

Автор вещания











Слайд 12НетСтрим (http://netstream.ru/)
Количественные характеристики
На один процесс (одно ядро процессора):
10 тыс. соединений без

потока вещания;
Вещание: в среднем 100 Мбит/с, пик 140 Мбит/с; примерно соответствует 700-900 человек, которые смотрят вещание.
Ретрансляция позволяет наращивать мощность практически неограниченно.



Слайд 13НетСтрим (http://netstream.ru/)
Всё!
Вопросы?


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика