Предисловие: Когда я говорю «машина» ниже, я имею в виду либо физический выделенный сервер, либо виртуальный частный сервер.Когда я говорю «узел», я имею в виду экземпляр виртуальной машины erlang, из которой может быть несколько запущенных в качестве отдельных процессов под одним ядром Unix.
У меня есть проект, который включает несколько erlang /OTP-приложения.Приложения будут работать вместе и общаться друг с другом на одном компьютере.Все они будут ударять по диску, используя память и порождая процессы эрланга.Они также будут использовать сетевые ресурсы, потому что они будут общаться с аналогичными машинами с одинаковым набором приложений, запущенных на них в кластере.
Почти вся эта связь осуществляется через HTTP.Таким образом, я мог бы разделить каждое приложение erlang OTP на отдельный экземпляр виртуальной машины erlang на одной и той же машине, и они могли бы по-прежнему общаться друг с другом.
Мой вопрос таков: лучше ли запускать их под одним erlangВМ, чтобы этот процесс виртуальной машины Erlang мог распределять доступ к ресурсам между ними и планировать выполнение различных процессов Эрланга.
Или лучше иметь отдельные узлы Эрланга на данном сервере?
Если один лучше другого, почему?
Я предполагаю, что запуск всех этих приложений в одном erlang vm, который, по сути, дает полный запуск сервера, приведет к повышению производительности.Операционная система просто управляет диском и оперативной памятью на низком уровне и имеет только один значительный процесс (виртуальная машина Erlang) для переключения с ... и виртуальная машина Erlang, вероятно, более умна в распределении ресурсов, когда она имеет целостное представление обо всехпроцессы erlang.
Это может быть то, что мне нужно проверить, но я не в состоянии сделать это эффективно в ближайшем будущем.