Erlang的容错能力如何,或者在这方面有何帮助?

gt0wga4j  于 2022-12-08  发布在  Erlang
关注(0)|答案(4)|浏览(103)

Erlang的容错能力如何,或者在这方面有何帮助?

ojsjcaue

ojsjcaue1#

我想我在对另一个帖子的回复中涵盖了部分答案。

fdbelqdn

fdbelqdn2#

Erlang具有容错功能,并考虑到以下几点:

  • Erlang知道错误会发生,事情会中断,所以Erlang让您拥有强大的工具来最小化错误的影响,并在错误发生时从错误中恢复,而不是防范错误。
  • Erlang鼓励你为成功的案例编程,并且在任何出错的情况下崩溃,而不尝试恢复部分损坏的数据。这背后的想法是,部分不正确的数据可能会在你的系统中进一步传播,并可能被写入数据库,从而给你的系统带来风险。最好尽早摆脱它,只保留完全正确的数据。
  • Erlang中的进程隔离有助于最大限度地减少部分错误数据的影响,当它出现时,导致进程崩溃。系统清理崩溃的代码和内存,但继续作为一个整体工作。
  • 监督和重新启动策略可帮助您在系统的某些部分崩溃时通过重新启动系统的重要部分并使其恢复正常运行来保持系统的完全功能。如果出现了严重错误,导致多次重新启动,则系统将被视为无法修复,因此将被关闭。
whitzsjs

whitzsjs3#

警告:我是一个二郎菜鸟。
丹尼尔的回答基本上是正确的。我强烈建议你花时间阅读Erlang的创建者Joe Armstrong的thesis(在存在软件错误的情况下制作可靠的分布式系统)。这篇论文很好地解释了开发健壮的分布式系统的必要性和解决方案。我相信这篇论文会满意地回答你的问题。

ocebsuys

ocebsuys4#

Erlang使创建许多小进程和监控这些进程变得容易。当其中一个进程崩溃时,可以重新启动系统的这一部分,而不必关闭整个系统。
您可能在Windows的现代版本中看到过类似的内容:如果图形驱动程序崩溃,则系统可以重启图形驱动程序;它不会破坏整个系统。
为了让编写容错应用程序变得更容易,Erlang提供了监督进程的概念。这些进程监视许多子进程,并且知道如果子进程死亡了如何响应。你可以创建一个完整的监督树,这样你就可以对应用程序的不同部分的行为进行精细控制。你可以阅读更多in the Erlang documentation

相关问题