11

我已经成功地将工作发送到一组演员来执行我的工作,但现在我想对所有工作人员返回的结果进行一些聚合。我怎么知道每个人都完成了?

我想出的最好办法是维护一组请求 ID 并等待该组变为零,但这似乎不优雅。

4

1 回答 1

10

通常,您想为此使用我们所说的“指挥官”模式。本质上,您有一个有状态的参与者 (the Commander) 负责启动和监视任务。然后,您将实际工作分摊到演员池中,并让他们在Commander完成后向他们报告。然后指挥官可以通过计算# completions/来跟踪工作的进度size of worker pool

这样,工作人员可以在工作时独立监控和重新启动,但所有宝贵的任务级状态和信息都保存在 Commander 中(这称为“错误内核模式”

您可以在Akka.NET 可扩展网络爬虫演示中看到一个示例。

于 2015-05-06T21:21:16.197 回答