Я строю систему Erlang/OTP, которая состоит из веб-сервера MochiWeb, некоторые пользовательские приложения Erlang/OTP и несколько неместных компонентов, которые являются следующие:OTP: как контролировать компоненты, отличные от OTP?
- база данных CouchDB для хранения как состояние веб-сервера MochiWeb и постоянные данные (пользователи, учетные записи и т. д.)
- устаревшая база данных PostgreSQL для хранения некоторых других объектов (заказы, учетные записи и т. д., реквизиты клиента: не могут быть перенесены в CouchDB, данные должны использовать как есть);
- сервер Asterisk для предоставления уведомлений пользователям пользователям системы.
Я хотел бы достичь высокого уровня безотказной работы и доступности, и поэтому я хотел бы знать, что является лучшим способом отслеживать те элементы, которые не являются Erlang/OTP системы. В принципе, я хотел бы, чтобы каждый элемент системы контролировался, контролировался и перезапускался, если это необходимо. Это легко достичь для приложений Erlang/OTP, но я не знаю, как это сделать с компонентами, отличными от Erlang.
Должен ли я обернуть их в качестве приложений Erlang/OTP и включают в надзор дерева OTP?
Или использовать некоторые сторонние программные средства для мониторинга и контроля тех компонентов, которые не являются Erlang/OTP системы Erlang/OTP?
Какая самая известная практика для этого?
Таким образом, я переношу каждую часть программного обеспечения, отличного от OTP, в приложение OTP через порты и добавляю его в дерево контроля OTP, верно? – skanatek
Это один из способов пойти на него да. Другой способ - сохранить работу, например, «monit» вне системы. –
Благодаря ссылке на monit! Кажется, что у него есть некоторые основные стратегии перезапуска, которые могут быть реализованы через управляющий файл. Сомневаюсь, что я смогу запустить Django или Asterisk через порт Erlang. – skanatek