Your SlideShare is downloading. ×
pyFMS
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

pyFMS

3,349
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,349
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Добрый день! Меня зовут Андрей Смирнов, я работаю техническим директором компании NetStream. Я расскажу о нашем опыте по созданию сервера вещаний для Flash. Сегодня этот сервер работает в качестве движка вещаний на сайте Smotri.com.
  • Transcript

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