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

Автор оригинала: 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»
Поделиться публикацией

Комментарии 13

    0
    Пожайлуста, добавьте в начале статьи, что это перевод цикла статей со ссылкой на оригинал: spawnlink.com/
      +1
      Это и так перевод. Есть и автор, и ссылка. Также, первый пост этого блога говорит об этом.
        0
        Пропустил первую ссылку «предыстория». Там да, сказано. Ок.
          0
          Ее я добавил уже позже:)

          Просто в конце статьи под тегами пишется автор оригинальной статьи, он же ссылка на нее.
            0
            Ого, я и не заметил :) Буду знать куда смотреть теперь.
      0
      А почему вы перевели behaviour как интерфейс? Чтобы ООП-программистам понятнее было? :))
        –1
        Не нравится слово «поведение»:)
          +2
          Но тем неменее это уже устоявщий рускоязычный термин в рунете. Имхо, его и нужно использовать. Я так же может и нахожу, что есть параллели с ООП, но все же это не совсем интерфейс.
            0
            Согласен, он наиболее распространенный. Но я также встречал и «интерфейс». Тут на усмотрение, мне кажется
        0
        Спасибо!
        Вы как раз вовремя начали свой цикл статей! Начал изучать Эрланг, но пока очень многое непонятно — в первую очередь из-за совершенно иной парадигмы. Непонятно как решаются на нем (и в рамках платформы ОТР) распостраненные задачи, на что заменяются ООП-подходы и т.п.
          0
          А перенос в Erlang блог то будет?
            0
            Если мне кто-нибудь подскажет, как это сделать — буду рад:)
              0
              Просто когда у тебя достаточно кармы при редактировании статьи её можно перенести в новый блог через «В какой блог публикуем?»

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое