【问题标题】:Erlang, connecting nodes across the internet in ErlangErlang,在 Erlang 中连接互联网上的节点
【发布时间】:2012-02-22 02:07:31
【问题描述】:

我已经开始玩一些 erlang,并且觉得它最有趣。

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

我想我记得听说过能够在 erlang VM 内传递闭包,这可行吗?或者甚至用开发机器上的编译代码更新服务器机器上的线程?

我知道这听起来像是一种冒险的做事方式,确实如此,但这是我的想法。

【问题讨论】:

标签: concurrency erlang software-distribution


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    一旦您更新了模块,您更新动态代码的选项包括简单地重新加载模块(类似于code:load_file/1)。一个完整的OTP upgraderebar 可能在这里有所帮助)或介于两者之间的东西(如updo 或mochiweb reloader 模块)。这实际上取决于您要做什么,更改的模块之间的依赖关系等。

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 2017-12-16
      • 2019-07-19
      • 2011-04-11
      • 2014-06-28
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      相关资源
      最近更新 更多