ZeroMQ - 在x远程工作者上运行相同的任务并在客户端上收集结果

时间:2015-03-13 16:10:19

标签: architecture network-programming zeromq distributed-computing

我有一个场景,我有一个客户端需要同时在x worker上运行异步任务(每个worker在远程机器上都有一个ZeroMQ套接字绑定)。

因此,这将是对多个端点的单个请求:

10.0.0.7 REQ ----> 10.0.0.2, 10.0.0.3, 10.0.04 (Task)

每个端点都会在完成后发回进度和最终结果。

10.0.0.2 REP ----> 10.0.0.7 (25%)
10.0.0.2 REP ----> 10.0.0.7 (50%)
10.0.0.3 REP ----> 10.0.0.7 (45%)
10.0.0.3 REP ----> 10.0.0.7 (75%)
10.0.0.4 REP ----> 10.0.0.7 (45%)
10.0.0.2 REP ----> 10.0.0.7 (Result)
10.0.0.3 REP ----> 10.0.0.7 (Result)
10.0.0.4 REP ----> 10.0.0.7 (Result)
10.0.0.7 - Save all results received

因此,相同的逻辑任务应该在x机器上同时运行,然后每台机器应该发回几个进度回复,然后是计算该特定任务的最终结果。收到所有机器的所有结果后,结果应存储在客户端上,逻辑任务完成。

到目前为止,我已经找到了ZeroMQ的以下可能方法:

  1. 使用ZeroMQ轮询多个套接字(每个套接字连接到一个端点),并且当所有结果都关闭所有连接时。
  2. 为每个连接使用经销商 - 路由器对(以便能够从工作人员那里获得多个回复),并行运行它们。这看起来效果很好,因为我可以更好地控制个人联系。
  3. 使用pub-sub架构。
  4. 此外,客户端应该能够在特定的盒子上停止重启任务,因此它不一定是工作者的单个REQ(可以有额外的REQ重启等)。

    所有方法当然都包括一些可靠性机制和正确的错误处理。

    不确定哪种方法最优。我想知道是否有人在ZeroMQ中实现了类似的东西,建筑推荐是什么?

0 个答案:

没有答案