Erlang的从属模块:代码和IO分发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Erlang的从属模块:代码和IO分发相关的知识,希望对你有一定的参考价值。

我们在一个应用程序中使用Erlang和slave模块,该应用程序在不同的机器上生成从属节点,这些机器向另一台机器上的主节点报告并由其协调。从属节点在他们的机器上打开端口并运行一些外部程序(本质上,erlang从属节点(我们称之为工作者)只是围绕外部程序的奇特包装)。

但是,我们遇到了一些意想不到的问题,我们还没有找到好的解决方案。

  1. 代码分发。目前我们的Makefile将已编译的erlang代码(ebin文件夹)rsyn为运行工作节点的机器,我们通过工作节点启动时的-pa参数加载它。确实应该有一些通过Erlang在运行时自动分发代码的方法,但我们不知道该怎么做。
  2. 日志记录。从模块文档说“从站生成的所有TTY输出都将被发送回主节点”。但是,当我们在slave(worker)节点上运行lager(basho logger)时,它的输出不会被重定向到主节点的tty(只有主节点的日志输出)。目前,我们在主节点上运行一个进程,该进程记录(通过lager)从从节点获取的消息。因此,为了在从属节点上记录某些内容,我们将消息发送到主节点。

我们正在启动这样的工作节点:

slave:start(IP, NodeName, NodeArgs)

NodeArgs在哪里

 -setcookie thecookie -pa /home/dau/mapro/deps/nicedecimal/ebin/ /home/dau/mapro/deps/meck/ebin/ /home/dau/mapro/deps/lager/ebin/ /home/dau/mapro/deps/jsx/ebin/ /home/dau/mapro/apps/worker/ebin/ /home/dau/mapro/ebin/ -s worker_app

其中所有给定路径都是运行工作节点的计算机上的绝对路径。

以上是关于Erlang的从属模块:代码和IO分发的主要内容,如果未能解决你的问题,请参考以下文章

分发一个 Erlang 聊天系统

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段

SpaceVim 语言模块 erlang

如何在Elixir或Erlang中在运行时动态创建和加载模块?

Erlang热门代码加载

Erlang 发布版本升级-1 代码热更