【问题标题】:Sending large files between erlang nodes在 erlang 节点之间发送大文件
【发布时间】:2014-02-20 06:42:32
【问题描述】:

我在同一台物理机器上设置了两个 Erlang 节点,我希望能够在节点之间发送大文件。

从我看到的症状看来,节点之间似乎只有一个 Tcp 连接,并且发送大型二进制文件会阻止所有其他流量,是这样吗?

更有趣的是,有没有一种方法可以让虚拟机在节点之间使用多个连接?

【问题讨论】:

  • 如何发送大文件?
  • 我正在从一个节点到另一个节点进行 rpc 调用,其中一个参数是一个非常大的二进制文件。
  • 你不能使用文件系统,只发送路径吗?您可以在 VM 之间设置共享磁盘(使用支持共享的文件系统:GFS、OCFS2、...):去过那里,做到了。

标签: sockets erlang virtual-machine


【解决方案1】:

是的,根据the manual,您只能获得 1 个连接

握手将继续,但 A 被告知 B 有另一个 正在进行的连接尝试将被关闭(同时 连接其中 A 的名称大于 B 的名称,按字面比较)。

不确定问题中的“大”是什么意思,但一般来说(和恕我直言),最好设置一个单独的 tcp 端口来处理有效负载,并且只使用标准的 erlang 消息作为信号方法(到协商端口、设置侦听器等),例如建议有新的传入有效负载并协商所需的任何内容。

顺便说一句,the same subject 上有一个有趣的帖子,您可以尝试调整 the net_* 变量,看看它们是否有助于解决问题。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    不建议在erlang节点之间发送大消息, http://learnyousomeerlang.com/distribunomicon 参考“带宽是无限的”部分,我建议使用像 GFS 这样的其他东西,这样你就不会失去 erlang 的分布特性。

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2010-12-19
      • 2017-06-11
      • 2016-08-12
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 2017-06-26
      • 2012-11-28
      相关资源
      最近更新 更多