Должны ли отдельные приложения Erlang использовать одну и ту же виртуальную машину на одной машине? - PullRequest
6 голосов
/ 27 августа 2010

У меня есть экземпляр CouchDB, работающий на одной машине, и, таким образом, со своим собственным процессом Erlang VM.Если у меня есть еще одно отдельное приложение Erlang, работающее на этом компьютере, лучше ли использовать одну и ту же виртуальную машину между CouchDB и моим приложением или рекомендуется запустить новый узел Erlang?

Ответы [ 2 ]

5 голосов
/ 27 августа 2010

Хотя многие рекомендуют разъединение этих подсистем, я бы использовал противоположный подход.Erlang имеет встроенную стратегию для запуска многих приложений в одном выпуске .Если ваши приложения общаются друг с другом напрямую, для вас может иметь смысл объединить их в выпуск.Это сделает звонки между приложениями быстрее.Некоторые утверждают, что все ваши приложения теперь имеют одинаковую судьбу, если вам потребуется отключить систему для обновления, в котором нуждается только одно из приложений.Это спорный вопрос с Erlang, когда вы распределяете свои приложения по многим узлам.Также большинство обновлений может быть сделано с горячей загрузкой кода .

4 голосов
/ 27 августа 2010

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

Проблема начинается с CouchDB. Он не имеет приличной системы сборки, которая позволяет использовать его как одно из независимых приложений узла Erlang. Таким образом, в этом случае вам нужно иметь как минимум 2 виртуальные машины (одна действует как демон Couch, а другая - ваше приложение)

...