Mq Lua

lua-users home
wiki

mqlua 是一种“不同”的执行 Lua 代码的方式。它结合了三种现有技术:Lua、POSIX 线程和 0MQ (zeromq.orq)。它以二进制文件形式提供,称为“mqlua”,它将 Lua 程序的文件名作为参数。这个 Lua 程序旨在“编排”一个称为节点的网络。

因此,该程序可以使用“node”模块创建“节点”。节点是在其自身线程中运行的独立 Lua 状态。节点可以使用 0MQ (zeromq) 消息队列进行通信。Lua 状态真正并行运行,并使用所有可用的 CPU 内核。这与 Lua 协程无关(协程仍然可用于每个 Lua 状态)。

节点可以通过使用 zeromq 消息队列在同一进程中的线程、同一台机器上的进程或不同机器上的进程之间进行通信。Lua 节点允许使用简单的语言 Lua 进行完整的分布式/并行处理。

使用 node.create() 创建一个新的节点(即在自己的线程中运行的 Lua 状态)。

local n = node.create('worker.lua', 'bee', 42)

这将创建一个新的线程,其中包含一个新的 Lua 状态,运行在文件“worker.lua”中找到的代码块,并将参数“bee”和 42 传递给 worker.lua 中的“...”。

节点可以使用“zmq”模块相互通信。因此,可以在一个进程中运行多个独立的 Lua 线程,并让它们相互通信,或与同一台机器上不同进程中的节点通信,或与远程机器上运行的节点通信。

源代码可以在 https://github.com/arcapos/mqlua 找到。

请注意,构建 mqlua 还需要 luazmq 模块,可以在 https://github.com/arcapos/luazmq 找到。

作者:MarcBalmer


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2020 年 1 月 31 日上午 10:36 GMT (差异)