Pull to refresh

Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)

Reading time3 min
Views7.1K
Original author: Mitchell Hashimoto
Предыстория

Множество людей ссылается на Erlang как «Erlang/OTP». OTP значает Открытую Телекомуникационную Платформу и представляет из себя не больше, не меньше, набор библиотек, которые поставляются вместе с Erlang. Они состоят из Erlang-интерфейсов(или поведений, behaviours англ.), которые необходимы при написании серверов, конечных автоматов, менеджеров(или диспетчеров) событий. Но это еще не все, OTP также включает интерфейс Application, который позволяет программистам запаковывать их код в одно «приложение». А Supervisor интерфейс дает программистам возможность создавать иерархическое дерево процессов, где в случае, если процесс умрет, то он будет перезапущен.

OTP — это слишком сложная вещь, чтобы рассказать о ней в одной статье, и я не буду пытаться это сделать, вместо чего я напишу серию статей в течение пары недель.

Почему мне следует узнать об Erlang/OTP?



Платформа, которая поставляется с Erlang, дает вам богатый и очень обобщенный набор библиотек и интерфейсов, с помощью которых вы легко можете создавать высоконагрузочные, отказоустойчивые системы с возможностью горячей замены кода. Далее следует список вещей, которые вы получаете «за просто так»:
  • Интерфейсы: сервер, конечные автоматы, менеджер событий
  • стандартизированная структура приложения
  • горячая замена кода
  • дерево управляющих процессов(ваши процессы всегда будут работать)

В дополнение к этим «бесплатным» возможностям, OTP предлагает стандартизированный подход к созданиию приложений на Erlang. Все известные open source приложения, такие как ejabberd, CouchDB, и MochiWeb, используют OTP.

Поэтому, изучая OTP, вы не только получаете знания и возможность создавать мощнейшие Erlang системы, но и можете сразу же присоединиться к open source проектам и получать знания и опыт там, так как они следуют той же общей структуре.

Если вы знаете общий синтаксис Erlang, то вы уже готовы начать изучать Erlang/OTP!

Интерфейсы gen_*:


  • gen_server — Интерфейс, который используется для создания приложения с клиент-серверной архитектурой.
  • gen_fsm — Интерфейс для создания машины конечных автоматов. Я ипользовал gen_fsm, чтобы создать SOCKS5 прокси-сервер, который представлял из себя конечный автомат со следующими состояниями: wait_for_init, wait_for_auth, ready и еще несколько промежуточных состояний для разных типов аутентификации. Существует еще много разных случаев, когда нужно использовать gen_fsm. И этот интерфейс — один из моих любимых.
  • gen_event — Используется для создания обработчиков и диспетчеров событий. Самый общий пример использования — это логирование ошибок(диспетчер) и множество обработчиков(терминалов, файлов и т.д.).

Supervisor интерфейс


Процесс реализует интерфейс supervisor для описания своих дочерних процессов, которыми он будет управлять. Множество супервизоров(управляющих процессов) объединяется в иерархическое дерево супервизоров. Если дочерний процесс умирает, супервизор знает, что с ним делать, как и когда перезапускать и т.д. Таким образом ваши процессы всегда на плаву.

Чтобы получить более полное представление об интерфейсе Supervisor, прочитайте эту страницу из документации Erlang.

Application интерфейс


Интерфейс Application нужен для того, чтобы запускать и останавливать множество супервизоров и других процессов как один юнит. Например, после создания моего SOCKS5 сервера, я упаковал все это в Application, который стартовал командой application:start(socks5_server).

Чтобы узнать больше об интерфейсе Application, обратите внимание на введение из документации Erlang.

Чего ожидать в дальнейшем?


Этот пост задумывался как краткое введение в OTP. Также, чтобы ответить на такие вопросы, как «Почему я должен изучать это?». И наконец, чтобы вы знали, где и как вы можете начать. В ближайшие дни я опубликую серию статей, в которых постепенно создам OTP приложение.

Моя следующая статья, которую я покажу завтра, будет содержать введение в gen_server, где мы напишем теоретический банк-менеджер аккаунтов. К концу 2-х недель вы будете знать, как создавать ваше собстенное Erlang/OTP приложение с нуля.

Продолжение: Введение в gen_server: «Erlybank»
Tags:
Hubs:
+14
Comments13

Articles