2013-07-10 3 views
2

Я строю систему Erlang/OTP, которая состоит из веб-сервера MochiWeb, некоторые пользовательские приложения Erlang/OTP и несколько неместных компонентов, которые являются следующие:OTP: как контролировать компоненты, отличные от OTP?

  • база данных CouchDB для хранения как состояние веб-сервера MochiWeb и постоянные данные (пользователи, учетные записи и т. д.)
  • устаревшая база данных PostgreSQL для хранения некоторых других объектов (заказы, учетные записи и т. д., реквизиты клиента: не могут быть перенесены в CouchDB, данные должны использовать как есть);
  • сервер Asterisk для предоставления уведомлений пользователям пользователям системы.

Я хотел бы достичь высокого уровня безотказной работы и доступности, и поэтому я хотел бы знать, что является лучшим способом отслеживать те элементы, которые не являются Erlang/OTP системы. В принципе, я хотел бы, чтобы каждый элемент системы контролировался, контролировался и перезапускался, если это необходимо. Это легко достичь для приложений Erlang/OTP, но я не знаю, как это сделать с компонентами, отличными от Erlang.


Должен ли я обернуть их в качестве приложений Erlang/OTP и включают в надзор дерева OTP?

Или использовать некоторые сторонние программные средства для мониторинга и контроля тех компонентов, которые не являются Erlang/OTP системы Erlang/OTP?

Какая самая известная практика для этого?

ответ

3

Ответ это зависит: P

Я видел как методы, используемые, но я не слишком уверен, что если один имеет преимущества по сравнению с другими. Мое чувство кишки было бы выбрать тот, где вы управляете приложением через порт изнутри erlang. Таким образом, у вас есть хороший централизованный способ узнать, возникают ли проблемы, и легко исправить ситуацию.

+0

Таким образом, я переношу каждую часть программного обеспечения, отличного от OTP, в приложение OTP через порты и добавляю его в дерево контроля OTP, верно? – skanatek

+1

Это один из способов пойти на него да. Другой способ - сохранить работу, например, «monit» вне системы. –

+0

Благодаря ссылке на monit! Кажется, что у него есть некоторые основные стратегии перезапуска, которые могут быть реализованы через управляющий файл. Сомневаюсь, что я смогу запустить Django или Asterisk через порт Erlang. – skanatek

Смежные вопросы