Max Lapshin Erlyvideo V1
Upcoming SlideShare
Loading in...5
×
 

Max Lapshin Erlyvideo V1

on

  • 1,594 views

 

Statistics

Views

Total Views
1,594
Views on SlideShare
1,589
Embed Views
5

Actions

Likes
0
Downloads
7
Comments
0

1 Embed 5

http://www.slideshare.net 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Max Lapshin Erlyvideo V1 Max Lapshin Erlyvideo V1 Presentation Transcript

  • Erlyvideo — видеостриминг на erlang Макс Лапшин http://erlyvideo.org/ Monday, April 12, 2010
  • Телевизор был удобный • Включил и смотри; • Быстро и удобно переключать каналы. Monday, April 12, 2010
  • А так же удобен интернет? • Как долго начать смотреть видео в интернете? • Почему такая долгая перемотка по роликам на ютубе? • На что тратится такая мощь и скорость каналов? • Что выберет ваша бабушка: телевизор Рубин или ютуб? Monday, April 12, 2010
  • Плата за возможность смотреть что хочешь • Телевизор показывает то, что • В интернете выбираем сами; подготовили для всех; • Сервер для каждого • Телебашня вещает выполняет персональные миллионам одно и то же. действия. Monday, April 12, 2010
  • Какие проблемы в интернете? • Большое время открытия видео с сервера; • Очень сложные алгоритмы сжатия видео; • Невозможность покадровой перемотки; • Чувствительность к потерям данных; • Неравномерная скорость сети. Monday, April 12, 2010
  • Все способы трансляции видео в интернете имеют проблемы. Какие? Monday, April 12, 2010
  • Файлы по HTTP • Путь, выбранный youtube.com; • Прекрасное решение для 10-минутных роликов; • Самые низкие стартовые траты на ПО и аппаратуру; • Мучительная перемотка; • Неравномерное использование канала; • Непригодность для трансляции прямого эфира. Monday, April 12, 2010
  • «Бесконечные» файлы по HTTP • Несложный способ раздачи прямого эфира; • Проблемы с антивирусами; • Невозможность отмотки назад (timeshift); • На паузе можно держать не больше жесткого диска; • Невозможно транслировать видео на сервер с камеры. Monday, April 12, 2010
  • RTMP (Adobe streaming) Real Time Media Protocol • Оптимальное использование ширины канала; • Быстрая перемотка; • Быстрый старт проигрывания; • Возможность видеоконференции. • Закрытый протокол; • Проблемы с антивирусами. Monday, April 12, 2010
  • Существующий опыт • Есть успешная реализация сервера на ObjectiveC; • Сложности с таймаутами, утечками памяти, многоядерностью; • Возникло предположение, что многие проблемы — артефакты платформы. Monday, April 12, 2010
  • Гипотеза об эффективности erlang Предположение: язык erlang даст сосредоточиться на бизнес-логике. Результат: erlyvideo — открытый видеостриминговый сервер. Monday, April 12, 2010
  • Почему именно erlang? Monday, April 12, 2010
  • Много ядер — много ниток • Языки C++, Java и т.п. дают возможность разрушить приложение одновременным доступом к памяти из разных ниток; • Ошибка в одной нитке может разрушить остальные. • В erlang-е существует полная изоляция данных и кода по псевдопроцессам (сотни тысяч в одной программе); • Ошибка в процессе не рушит остальные; Monday, April 12, 2010
  • Утечки памяти • Сложность инструментов (valgrind) для нахождения утечек на C; • Дороговизна полного устранения утечек в программе на С. • Иная природа утечек памяти в erlang упрощает устранение: оно сводится к локализации и проблемой не является. Monday, April 12, 2010
  • Горячее обновление кода • На языках C, Java и т.п. задача обновления кода не решена до конца; • Отсутствует простой способ обновления кода без отключения клиентов. • Горячее обновление кода из коробки без усилий программиста даже в работающих процессах; • Жестко детерминированные точки обновления кода. Monday, April 12, 2010
  • Параметризация функций Параметризация по типу входных данных: • не всегда отражает детали бизнес-логики; • порождает мифы о непригодности ООП. Параметризация по значениям входных данных: • ближе к бизнес-логике; • дает удобный синтаксис для работы с бинарными данными. Monday, April 12, 2010
  • RPC • Задача вызова функций на другом компьютере для семейства языков C за 30 лет не решена до конца; • Проблемы с передачей объектов, ссылок на них, распределенной сборкой мусора. • Замена в erlang классических объектов и ссылок на них на процессы, PID-ы которых прозрачно передаются по сети в сообщениях; • Надежный мониторинг состояния процессов на других нодах. Monday, April 12, 2010
  • Масштабирование по ядрам • Сложность написания линейно масштабирующуейся по ядрам программы на C из-за синхронизации доступа к общим данным. • erlang даёт линейное масштабирование по количеству ядер на рассматриваемых задачах без усилий программиста. Monday, April 12, 2010
  • Время обучения • Пары месяцев на C++ вряд ли хватит. • По информации от различных источников: 2 недель хватит; • Программист может учиться «в бою» и писать плохой код: он не разрушит работу чужого кода. Monday, April 12, 2010
  • Неужели нет проблем? Есть — и о некоторых стоит знать заранее. Monday, April 12, 2010
  • Стоит учесть: • В erlang медленная арифметика; • сложность ручного контроля за памятью; • отсутствие штатного менеджера пакетов; • много церемонии при использовании библиотеки на C; • непригодность для embedded: 10МБ RAM минимум для erlang. Monday, April 12, 2010
  • Роль erlang в erlyvideo • Эффективный, отлаженный, взрослый инструмент для создания сетевого сервера; • более быстрое развитие, чем у аналогичного сервера на Java: Red5; • мало коммитеров как из-за специфики предметной области, так и из-за редкого языка; • сложности со скриптингом: lua/руби в erlang не встроишь; • больше концентрации на предметной области, чем на языке. Monday, April 12, 2010
  • Результаты erlyvideo В короткие сроки получился медиасервер, который умеет: • Брать видео из файлов, с плат захвата, программ транскодирования и аппаратных перекодировщиков, с IP-вебкамер и обычных камер; • Раздавать видео как флеш-клиентам, так на iPhone и телеприставки; • Организовывать видеоконференции через веб; • Выполнять функции на сервере; • Показывать прямые трансляции с отмоткой назад; • erlyvideo справляться с обслуживанием 1800 пользователей, раздавая 1 гигабит видео с одного компьютера. Monday, April 12, 2010
  • Цены на RTMP серверы: • Erlyvideo 0$ (открыты исходники, MIT) • Adobe FMS 4500$ (995$ за крайне урезанный вариант) (закрытый) • Wowza 995$ (закрытый) • Red5 0$ (открыты исходники, LGPL) Monday, April 12, 2010
  • Планы развития • Раздача прямого эфира на iPhone из буфера таймшифта; • Сохранение и показ бесконечных потоков с камер видеонаблюдения; • Серверное эхоподавление (с веб-страницы нельзя проводить конференцию без гарнитуры). Monday, April 12, 2010
  • Выводы • Erlang — эффективная как по скорости разработки, так и стабильности работы среда; • Вполне обосновано использование erlang вместо классического выбора (C++/Java); • Примером тому является хорошо развивающийся видеостриминговый сервер erlyvideo. Monday, April 12, 2010
  • Вопросы? http://erlyvideo.org/ Monday, April 12, 2010