【发布时间】:2014-07-05 18:18:21
【问题描述】:
如何在分布式应用程序中实现容错?据我了解,监督树仅适用于监督本地流程(如果我是对的?)。 如何监督在远程节点上产生的远程进程。我需要监督它们并在出现故障时重新启动它们?
【问题讨论】:
标签: erlang
如何在分布式应用程序中实现容错?据我了解,监督树仅适用于监督本地流程(如果我是对的?)。 如何监督在远程节点上产生的远程进程。我需要监督它们并在出现故障时重新启动它们?
【问题讨论】:
标签: erlang
查看OTP Design Principles 尤其是章节9 Distributed Applications 和子章节9.4 Failover 和9.5 Takeover。
如果您一般对主题感兴趣,您应该查看著名论文Making reliable distributed systems in the presence of software errors 以及大量有关该主题的已出版书籍。部分资料也在线3 Free E-Books and a Tutorial on Erlang。例如关于分发Distribunomicon的章节。
TL;TR?长话短说,正如您所写,您必须监控彼此的主管树并在出现故障时重新启动。你甚至可以重新发明轮子,因为 Erlang 本身提供了很好的工具来做这件事,或者使用现有的解决方案从裸 OTP 到 riak_core。
【讨论】:
erlang:monitor/2,当进程崩溃时,在另一台机器上启动它。