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

Содержание

Слайд 2

НетСтрим (http://netstream.ru/)

Содержание

Обзор существующих решений.
Разработка своего решения (pyFMS): выбор архитектуры, основные проблемы и

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

Слайд 3

НетСтрим (http://netstream.ru/)

Общая схема RTMP

RTMP:
симметричный;
проприетарный;
закрытый.

Возможности:
удаленный вызов процедур (RPC);
управление пропускной способностью;
работа с аудио-видео потоками

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

Клиент (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
Grafter (http://milgra.com/);

Слайд 5

НетСтрим (http://netstream.ru/)

Архитектура сетевого сервера

Много процессов.
Много нитей.
Один поток (асинхронный ввод-вывод).
Комбинированный: асинхронный в/в +

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

Слайд 6

НетСтрим (http://netstream.ru/)

Концепция нашего решения

Простота:
не будем реализовывать ничего лишнего;
простая архитектура - один поток

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

Слайд 7

НетСтрим (http://netstream.ru/)

Twisted Framework

Концепция отложенного выполнения (Deferred).
Переносимый асинхронный ввод-вывод (reactor).
Реализация большого числа базовых

НетСтрим (http://netstream.ru/) Twisted Framework Концепция отложенного выполнения (Deferred). Переносимый асинхронный ввод-вывод (reactor).
протоколов (HTTP, DNS, Telnet, и т.п.)

Слайд 8

НетСтрим (http://netstream.ru/)

Архитектура pyFMS

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

Слайд 9

НетСтрим (http://netstream.ru/)

Схема вещания

API

Клиент

pyFMS

Сайт (API)

Сбор и
анализ
статистики

НетСтрим (http://netstream.ru/) Схема вещания API Клиент pyFMS Сайт (API) Сбор и анализ статистики

Слайд 10

НетСтрим (http://netstream.ru/)

Эффективность реализации

Python – интерпретируемый ЯП
прозрачная сложность операций;
легкое расширение с помощью модулей

НетСтрим (http://netstream.ru/) Эффективность реализации Python – интерпретируемый ЯП прозрачная сложность операций; легкое
на С.
Для увеличения производительности в два раза достаточно было:
переписать 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
вещания

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

Слайд 12

НетСтрим (http://netstream.ru/)

Количественные характеристики

На один процесс (одно ядро процессора):
10 тыс. соединений без потока

НетСтрим (http://netstream.ru/) Количественные характеристики На один процесс (одно ядро процессора): 10 тыс.
вещания;
Вещание: в среднем 100 Мбит/с, пик 140 Мбит/с; примерно соответствует 700-900 человек, которые смотрят вещание.
Ретрансляция позволяет наращивать мощность практически неограниченно.
Имя файла: Сервер-Flash-вещаний-(RTMP)-на-Python-или-создание-высоконагруженных-сетевых-серверов-с-использованием-Twisted.pptx
Количество просмотров: 138
Количество скачиваний: 0