Erlang,在Erlang中连接互联网上的节点

时间:2012-02-20 14:36:25

标签: concurrency erlang software-distribution

我开始玩erlang,并发现它最有趣。

我的问题是这个,我想设置一个服务器来运行webservice。该服务应该在erlang中编写,并且应该很容易变异,我希望能够做很多热代码,代码在另一台机器上编写和测试,有一种方法可以从一个erlang noce轻松部署代码到另一个,而不必将其包装在文件中并传输文件?

我想我会记得一些关于能够在erlang VM内部传递闭包的事情,这是可行的吗?或者甚至用开发机器上的编译代码更新服务器机器上的线程?

我知道这听起来像是一种危险的做事方式,而且确实如此,但这是我的思想所决定的。

2 个答案:

答案 0 :(得分:1)

您无法真正摆脱将文件传输到目标部署计算机的麻烦。至少你需要发送新版本的模块。

更新模块后,您只需重新加载模块(类似code:load_file/1)即可更新飞行范围代码。完整的OTP upgraderebar可能会有所帮助)或介于两者之间(如updo或mochiweb reloader模块)。这实际上取决于你要做什么,改变模块之间的依赖关系等等。

答案 1 :(得分:1)

如果我理解正确,您希望将模块从一个节点加载到另一个节点。在这种情况下,您可以使用bif nl(Module)在所有节点上加载模块“Module”。或者你可以使用nc(Module)当然节点必须共享相同的cookie并且必须连接(参见net_adm:ping(Node)