Mq Lua

lua-users home
wiki

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

因此,这个程序可以使用“node”模块创建“节点”。节点是独立的 Lua 状态,运行在自己的线程中。节点可以使用 0MQ (zeromq) 消息队列进行通信。Lua 状态真正地并行运行,并利用所有可用的 CPU 核心。这与 Lua 协程无关(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


RecentChanges · preferences
编辑 · 历史
最后编辑于 2020 年 1 月 31 日,上午 4:36 GMT (diff)