erlang如何容错,或者在这方面有所帮助?
答案 0 :(得分:4)
我想我在this reply to another thread中介绍了部分答案。
答案 1 :(得分:3)
Erlang具有容错能力,并考虑到以下事项:
Erlang知道错误会发生,事情会破裂,因此Erlang不会防止错误,而是让您拥有强大的工具来最大限度地减少错误的影响,并在错误发生时从中恢复。
Erlang鼓励您为成功案例编程,如果出现任何问题则崩溃而不尝试恢复部分损坏的数据。这背后的想法是,部分不正确的数据可能会在您的系统中进一步传播,并可能被写入数据库,从而给您的系统带来风险。最好尽早摆脱它,只保持完全正确的数据。
Erlang中的进程隔离有助于最大限度地减少部分错误数据出现时的影响,从而导致进程崩溃。系统清理崩溃的代码及其内存,但整体保持工作。
监控和重启策略可帮助您的系统完全正常运行,如果部分系统因重新启动系统的重要部分并重新投入使用而崩溃。如果出现非常错误的情况,重新启动太多,系统将被视为无法修复,因此会被关闭。
答案 2 :(得分:2)
警告:我是Erlang noob。
@ Daniel的答案基本上是正确的。我强烈建议您花时间阅读Erlang创建者Joe Armstrong的thesis(在存在软件错误的情况下制作可靠的分布式系统)。本文对开发健壮的分布式系统的需求和解决方案提供了很好的解释。我相信这篇论文会令人满意地回答你的问题。
答案 3 :(得分:1)
Erlang可以轻松创建许多小型流程并监控这些流程。当其中一个进程崩溃时,可以重新启动系统的这一部分,而无需将整个系统关闭。
在现代版本的Windows中,您可能已经看到过类似的内容:如果图形驱动程序崩溃,系统可以重新启动它;它不会杀死整个系统。
为了更容易编写容错应用程序,Erlang提供了管理程序进程的概念。这些过程监视许多子进程,并知道如果孩子死亡,如何回应。您可以创建一个完整的监督树,以便您可以很好地控制应用程序的不同部分的行为方式。您可以阅读更多in the Erlang documentation。