查看源代码 pool (stdlib v6.2)

负载分配工具。

此模块可用于将一组 Erlang 节点作为计算处理器的池运行。它被组织为一个主节点和一组从节点,并包括以下功能:

  • 从节点定期向主节点发送关于其当前负载的报告。
  • 可以向主节点发送查询,以确定哪个节点的负载最低。

BIF statistics(run_queue) 用于估计未来的负载。它返回 Erlang 运行时系统中准备运行的进程队列的长度。

从节点使用 slave 模块启动。这会影响终端 I/O、文件 I/O 和代码加载。

如果主节点失败,则整个池退出。

文件

.hosts.erlang 用于选择可以启动节点的宿主机。有关此文件的格式和位置的信息,请参阅 net_adm:host_file/0

$HOME/.erlang.slave.out.HOST 用于可能来自标准 I/O 上从节点的所有额外 I/O。如果启动过程不起作用,此文件可以指示原因。

摘要

函数

确保池主节点正在运行,并将 Node 包含在池主节点的节点池中。

返回预期未来负载最低的节点。

返回池的当前成员节点列表。

在预期具有最低未来负载的池节点上生成一个进程。

在预期具有最低未来负载的池节点上生成一个进程并将其链接。

启动一个新池。

停止池并杀死所有从节点。

函数

-spec attach(Node) -> already_attached | attached when Node :: node().

确保池主节点正在运行,并将 Node 包含在池主节点的节点池中。

-spec get_node() -> node().

返回预期未来负载最低的节点。

-spec get_nodes() -> [node()].

返回池的当前成员节点列表。

链接到此函数

pspawn(Mod, Fun, Args)

查看源代码
-spec pspawn(Mod, Fun, Args) -> pid() when Mod :: module(), Fun :: atom(), Args :: [term()].

在预期具有最低未来负载的池节点上生成一个进程。

链接到此函数

pspawn_link(Mod, Fun, Args)

查看源代码
-spec pspawn_link(Mod, Fun, Args) -> pid() when Mod :: module(), Fun :: atom(), Args :: [term()].

在预期具有最低未来负载的池节点上生成一个进程并将其链接。

-spec start(Name) -> Nodes when Name :: atom(), Nodes :: [node()].

等效于 start(Name, [])

-spec start(Name, Args) -> Nodes when Name :: atom(), Args :: string(), Nodes :: [node()].

启动一个新池。

读取文件 .hosts.erlang 以查找可以启动池节点的宿主机名;请参阅 文件 部分。如果找不到该文件,则启动过程将失败。

从节点使用 slave:start/2,3 启动,同时传递 Name,如果提供,则传递 ArgsName 用作节点名称的第一部分,Args 用于指定命令行参数。

必须设置访问权限,以便池中的所有节点都有权相互访问。

该函数是同步的,并且当它返回值时,所有节点和所有系统服务器都在运行。

-spec stop() -> stopped.

停止池并杀死所有从节点。