Flash Media Server 4: Плагины

This post is also available in: Английский

Этой статьей мы открываем серию статей по разработке С++ плагинов к Flash Media Server. Мы не ставим своей целью полностью описать все функциональные возможности FMS, а лишь восполнить недостаток материалов касательно разработки С++ плагинов для FMS доступных на официальных ресурсах.
В серии статей планируется осветить следующие темы:
Часть 1: Общие принципы и понятия архитектуры FMS
Часть 2: Система RTMP URL токенизации контента на основе authorization плагина
Часть 3: Балансирование нагрузки с помощью access плагина

Первая часть. Общие принципы и понятия архитектуры FMS.

Ввведение

Adobe Flash Media Server (FMS) прежде всего является медиа сервером, основная задача которого — доставка мультимедиа контента пользователям. Однако FMS также имеет достаточно удобный инструментарий написания бизнес логики для многопользователских приложений реального времени. FMS имеет встроенный скриптовый язык Server Side ActionScript (SSAS), который является обыкновенным JavaScript. SSAS имеет практически все необходимое для разработки приложений, разве что недостает встроенной поддержки для работы с базами данных.

Но если необходимо более тщательно контролировать, что происходит внутри сервера, знать какие события генерируются внутри сервера, обрабатывать эти события, контролировать нагрузку на отдельные части сервера, контролировать входящие соединения или организовать доступ к контенту, расположенному на какой-либо распределенной файловой системе, то здесь на помощь придет возможность расширения функциональности сервера за счет написания специализированных модулей (плагинов).

Архитектура

FMS использует клиент-серверную архитектуру и по умолчанию любая инсталяция состоит как минимум из 4 процессов, представленных на Рис. 1:

  • fmsmaster
  • edge
  • core
  • admin

Когда стартует FMS, запускается fmsmaster процесс, основной функцией которого является запуск или остановка core процессов, когда это необходимо. fmsmaster процесс может быть только только один, управлять или конфигурировать его нельзя. Клиентские соединения никогда не проходят через этот процесс.

Все входящие клиентские соединения первоначально попадают на edge процесс, независимо от выбранной схемы конфигурирования FMS (EDGE/ORIGIN). Здесь клиентское соединение может быть пропущено через access плагин, если таковой установлен. Распределение входящих соединений будет более детально рассмотрено в одной из следующих статей на примере балансирования нагрузки.

После edge процесса клиентские соединения попадают на core процессы, где выполняются SSAS приложения, authentication плагины (их может быть несколько) и file плагин.

admin процесс предоставляет доступ к Administration API, которое позволяет мониторить, конфигурировать и управлять FMS.

Типы FMS плагинов
Для написания плагинов Adobe предоставила специальный С++ SDK, который позволяет в качестве расширений создавать 3 вида плагинов:

Access плагин (плагин доступа) — это еще один уровень безопасности на FMS, который может производить операции с входящими соединениями до того, как они достигнут уровня SSAS приложений. На FMS сервер может быть размещен только один access плагин! Основное назначение этого типа плагина — это принять или отвергнуть входящие соединения на основе некоторого критерия: например, на основе статистики, запроса авторизации во внешнюю систему и т.д. Также access плагин позволяет устанавливать уровень доступа к контенту. Однако, наверное, самой важной возможностью для высоконагруженных сервисов является способоность в access плагине привязывать входящие соединения к конткретным core процессам, тем самым организуя балансировку нагрузки внутри сервера для более оптимального использования доступных ресурсов. Более подробно балансирование нагрузки будет рассмотрено в одной из следующих статей.

Authorization плагин позволяет управлять событиями, которые происходят внутри core процессов, а именно: котролировать входящие соединения, котролировать доступ к контенту, производить маппирование между логическим путем до контента и физическим, можно построить сложную бизнес логику по учету доступа к контенту на основе подписок, накапливать статистику пользования контентом, можно асинхронно вызывать SSAS методы приложения, отключать клиентов от приложения и т.д. Таких плагинов может быть несколько, и все они будут учавствовать в обработке событий FMS в алфавитном порядке.

File плагин позволяет организовать асинхронный доступ к контенту расположенному на некой распределенной файловой системе по любому протоколу, или управлять механизмами кеширования контента на основе собственных правил. Файл плагин может быть установлен только один.

На этом краткое введение в общие понятия и архитектуру FMS можно считать законченным, за дополнительной информацией и деталями стоит обратиться к документации FMS: