我们所使用的算法叫“embarrassingly parallel” 意思是每个子任务是独立完成的,与其它子任务无关。这个算法可以高度并行化,所以非常适合使用actor模型。
以下是我们所使用的算法的公式:
在这个特定的算法中,有一个主actor将序列分割成段并发送给工作actor来进行计算。当工作actor完成自己的序列段的计算后将结果传给主actor,由主actor进行汇总。
我们要做的设计是由一个 主 actor来启动整个计算过程,创建一组工作 actor. 整个工作会被分割成具体的小段, 各小段会以round-robin的方式发送到不同的工作 actor. 主actor等待所有的工作actor完全各自的工作并将其回送的结果进行汇总。当计算完成以后,主actor将结果发送给监听器 acotr, 由它来输出结果。
在这个基础上, 现在让我们创建在这个系统中流动的消息。我们需要4种不同的消息:
- Calculate – 发送给 主 actor 来启动计算。