gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:07:49 24 4
gpt4 key购买 nike

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

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

我发现无法为 foo 应用程序提供适当的断路器“不符合习惯”。

这是否意味着 foo 中的每个公共(public)函数都应该在其主管下生成一个进程?

谢谢,巴斯蒂安

最佳答案

不一定,有两个原因:

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

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

关于Erlang应用程序设计(如何短路),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55950195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com