Max Lapshin Erlyvideo V1

1,294 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,294
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Max Lapshin Erlyvideo V1

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

×