2012-02-20 4 views
1

Я начал играть в alittle с erlang и нашел его наиболее интересным.Erlang, соединяющие узлы через Интернет в Erlang

Моя проблема заключается в том, что я хотел бы настроить сервер для запуска веб-службы. Служба должна быть написана в erlang и должна быть легко мутирована, что я хотел бы иметь возможность делать горячие коды, а код написан и протестирован на другой машине, это способ легко развернуть код из одного erlang noce к другому, без необходимости обертывать его в файлы и передавать файлы?

Я думаю, что я помню, что слышал что-то о возможности пройти замыкания внутри виртуальной машины erlang, это выполнимо? или, возможно, даже обновлять потоки на серверной машине с помощью скомпилированного кода на машине разработки?

Я знаю, что это звучит как рискованный способ делать что-то, и это так, но это то, на что мой разум остановился.

+1

Посмотрите на этот вопрос: http://stackoverflow.com/q/7917108/431620 и внимательно прочитайте его ответ: http://stackoverflow.com/a/7927649/431620 –

ответ

1

Если я правильно понимаю, вы хотите загрузить модуль с одного узла на другой. В этом случае вы можете использовать bif nl(Module), который загружает модуль «Модуль» на всех узлах. Или вы можете использовать nc(Module) Конечно, узлы должны использовать один и тот же файл cookie и должны быть подключены (см. net_adm:ping(Node))

1

Вы не можете уйти от передачи файлов на целевую машину развертывания. По крайней мере, вам нужно будет отправить новые версии модулей.

После того, как вы обновили модули, вы можете обновить код диапазона летания от простой перезагрузки модуля (что-то вроде code:load_file/1). Полностью раздутый OTP upgrade (rebar может помочь здесь) или что-то промежуточное (например, updo или модуль mochiweb reloader). Это действительно зависит от того, что вы пытаетесь сделать, зависимостей между измененными модулями и т. Д.

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