在erlang中使用链接机制来跟踪作业是个好主意吗?



我正在使用erlang编写一个map reduce实现。

为了得到映射已完全完成的通知(所有数据已被处理),我在执行实际映射的工人和"管理进程"之间创建了一个链接,该进程将捕获来自工人的EXIT信号,并查看原因是否为normal。如果是,它将认为作业已正确运行。如果没有,则根据Pid,它将确定失败的作业并为该作业生成另一个工人(我将保留一个工人的Pid s簿)。一旦从所有Pid接收到具有Reason=normal的EXIT信号,映射就完全完成了。

我的问题是,1)这安全吗?2)这是一种好的做法吗?
顺便说一下,作业是幂等的。

目前为止,这种方法听起来不错。

但是你不应该自己实现它,而应该使用一个supervisor。

simple_one_for_one类型的管理器实现了与您描述的几乎完全相同的行为。

最新更新