Erlang应用程序设计(如何短路)

Erlang应用程序设计(如何短路),erlang,Erlang,我有一个关于如何设计erlang应用程序的存在主义问题: 我通常创建一个应用程序,启动一个主管和一些工作人员。 除了监控树之外,我还有带函数的模块(duh)。 我还有一个web API,可以从应用程序的模块调用函数。 当我停止应用程序时(application:stop(foo)。),Web服务器仍然可以调用foo的函数 我发现不能为foo应用程序配备合适的断路器是“不习惯的” 这是否意味着foo中的每个公共功能都应该在其主管下生成一个流程 谢谢, 巴斯蒂安不一定,原因有二: foo应用程序将有

我有一个关于如何设计erlang应用程序的存在主义问题:

我通常创建一个应用程序,启动一个主管和一些工作人员。 除了监控树之外,我还有带函数的模块(duh)。 我还有一个web API,可以从应用程序的模块调用函数。 当我停止应用程序时(
application:stop(foo)。
),Web服务器仍然可以调用
foo
的函数

我发现不能为
foo
应用程序配备合适的断路器是“不习惯的”

这是否意味着
foo
中的每个公共功能都应该在其主管下生成一个流程

谢谢,
巴斯蒂安不一定,原因有二:

foo
应用程序将有两种功能:需要工作进程运行的功能和不需要的功能(很可能是纯功能)。如果应用程序停止,显然前者在调用时会失败,而后者仍能工作。根据Erlang的“让它崩溃”理念,这只是web服务器需要处理(或不处理)的另一个错误情况。如果纯函数仍然工作,那么没有理由禁止web服务器调用它们:这意味着系统的大部分功能正常


在Erlang节点中,停止应用程序不是您通常会做的事情。Erlang应用程序声明依赖项,即需要运行的应用程序才能正常运行。您会注意到,如果您试图在依赖项之前启动应用程序,它将拒绝启动。虽然可以手动停止应用程序,但这意味着节点的状态不再符合应用程序模型的假设。当构建一个由一组Erlang应用程序组成的“发布”时,通常它们都将作为
永久的
应用程序启动,这意味着如果任何一个应用程序崩溃,整个Erlang节点都将退出,以避免违反此假设。

感谢您的精彩解释。我现在明白了,我对一些不是真实用例的东西有点偏执。