【发布时间】:2011-12-10 04:28:48
【问题描述】:
我正在使用zeromq 解决一个涉及数百(可能数千)客户请求执行任务的问题。每个客户端都会请求执行特定任务,完成后,结果会返回给发出该请求的客户端。
这些是到目前为止我已经确定的演员,在我想出的模式中:
- 客户端:这是请求执行工作单元(或“工作”)的参与者
- 控制器:这是跨可用引擎对“作业”进行负载平衡的参与者
- Engine:这是从控制器接收作业请求并将结果发布回客户端的参与者。
我还没有弄清楚引擎如何将消息返回给客户端。我猜想使用 zeromq 实现这一点的一种方法是:
客户:
将一个套接字上的作业消息推送到控制器订阅以完成由引擎发布的结果,在另一个 插座控制器:
PULL 作业消息从一个套接字上的客户端 PUBlish 作业消息到另一个套接字上的引擎(显然,这将是一个转发设备)引擎:
订阅一个套接字上的作业消息 PUBlish 结果到另一个套接字
如果有人提供一个骨架/sn-p,它将显示如何使用 zeromq 框架实现此模式的大纲,这将是最有帮助的。
代码 sn-p 可以是 C、C++、PHP、Python 或 C#
[[编辑]]
在阅读了 Task Farms 之后(根据 akappa 的建议)。我认为这个问题确实可以通过任务农场来建模。我已经相应地修改了我的原始演员(并且也更改了标题)。
如果熟悉 zeromq 的人能够勾勒出一个框架来展示我如何使用核心组件来构建这样一个框架,那将是非常有用的。
【问题讨论】:
-
唯一让我大吃一惊的是,客户和工人似乎是同一回事。他们都请求一个工作单元,完成它并在完成后回复。
-
@CodeReaper:不完全是——也许我最初的问题没有很好地形成。在 akappa 指出我正确的方向后,我更新了问题。