【问题标题】:Fault Tolerance in a Distributed Erlang分布式 Erlang 中的容错
【发布时间】:2014-07-05 18:18:21
【问题描述】:

如何在分布式应用程序中实现容错?据我了解,监督树仅适用于监督本地流程(如果我是对的?)。 如何监督在远程节点上产生的远程进程。我需要监督它们并在出现故障时重新启动它们?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    查看OTP Design Principles 尤其是章节9 Distributed Applications 和子章节9.4 Failover9.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,当进程崩溃时,在另一台机器上启动它。
    猜你喜欢
    • 2013-02-26
    • 2015-04-11
    • 2011-10-11
    • 2011-04-20
    • 1970-01-01
    • 2013-08-29
    • 2011-11-10
    • 1970-01-01
    • 2014-09-05
    相关资源
    最近更新 更多