假设我们使用Erlang实现Pregel。为什么我们实际上需要超级步骤?仅将消息从一位主管发送到代表节点的进程是否更好?他们可以将计算功能应用于自己,彼此发送消息,然后向主管发送“完成”消息。
Pregel在并发Erlang实现中超级步骤的全部目的是什么?
最佳答案
Pregel模型所拥护的SuperStep概念可以看作是并行执行实体的一种障碍。在每个超级步骤结束时,每个工作程序将其状态刷新到持久性存储中。
该算法在每个SuperStep的末尾都有检查点,因此在发生故障的情况下,当新节点必须接管发生故障的对等方的功能时,它就有一个起点。 Pregel保证,由于在SuperStep启动之前已将节点的数据刷新到磁盘,因此它可以从该点可靠地启动。
它也以某种方式表示算法的“进展”。可以为预凝胶算法/作业提供“最大超级步数”,然后终止算法。
您在问题中指定的内容(关于上级向工作者发送计算功能并等待“完成”),可以肯定实现(尽管我不认为与OTP打包的当前主管可以开箱即用) SuperStep的概念只是Pregel模型的要求。另一方面,如果您要实现类似并行映射器的功能(例如Joe在书中实现的功能),则不需要超级步骤/