Erlang, соединяя узлы через Интернет в Erlang - PullRequest
1 голос
/ 20 февраля 2012

Я начал играть немного с эрлангом, и мне это показалось наиболее интересным.

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

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

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

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

если я правильно понимаю, вы хотите загрузить модуль с одного узла на другой.В этом случае вы можете использовать bif <a href="http://www.erlang.org/doc/man/c.html#nl-1" rel="nofollow">nl(Module)</a>, который загружает модуль «Модуль» на все узлы.Или вы можете использовать <a href="http://www.erlang.org/doc/man/c.html#nc-1" rel="nofollow">nc(Module)</a> Конечно, узлы должны использовать один и тот же файл cookie и должны быть подключены (см. <a href="http://www.erlang.org/doc/man/net_adm.html#ping-1" rel="nofollow">net_adm:ping(Node)</a>)

1 голос
/ 21 февраля 2012

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

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

...