Parallel processing 分布式系统中的弹性并行与容错

Parallel processing 分布式系统中的弹性并行与容错,parallel-processing,julia,fault-tolerance,Parallel Processing,Julia,Fault Tolerance,Julia如何公开容错性-当节点停机(有意或无意)以及节点之间的通信停机时 我看到了这样一个特性的一个例子,但无法确切了解它是如何实现的。在pmap文档字符串中,您可以看到,这已经在那里使用重试关键字参数实现了 pmap([::AbstractWorkerPool], f, c...; distributed=true, batch_size=1, on_error=nothing, retry_n=0, retry_max_delay=DEFAULT_RETRY_MAX_DELAY, retr

Julia如何公开容错性-当节点停机(有意或无意)以及节点之间的通信停机时


我看到了这样一个特性的一个例子,但无法确切了解它是如何实现的。

在pmap文档字符串中,您可以看到,这已经在那里使用
重试
关键字参数实现了

pmap([::AbstractWorkerPool], f, c...; distributed=true, batch_size=1,
on_error=nothing, retry_n=0, retry_max_delay=DEFAULT_RETRY_MAX_DELAY,
retry_on=DEFAULT_RETRY_ON) -> collection
。。。任何错误都会阻止pmap处理剩余的数据 收藏。要覆盖此行为,可以指定错误 通过接收单个 参数,即异常。该函数可以通过以下方式停止处理: 重新引用错误,或者,要继续,请返回任何随后被忽略的值 以内联方式将结果返回给调用方

失败的计算可以 也可以通过retry_on、retry_n、retry_max_delay重试,它们是 作为参数retry\u on、n和max\u delay传递给retry 分别地如果指定了批处理,而整个批处理失败,则所有 将重试批处理中的项目

我认为@parallel宏没有类似的东西。但是您可以使用
Base.wrap_on_error
&
Base.wrap_retry
函数来扩展原始函数以处理错误。通过查看
pmap
at的定义,您可以看到许多实现细节

基本策略就是捕获错误(可能还有数据),然后使用同一个worker重试,如果该worker已关闭,则使用另一个worker重试。我想