在 Elixir 伞式应用程序中,当一个应用程序(例如 appA)发生错误并且其主管确定该错误无法恢复时,主管可能会终止整个伞式应用程序,这不仅会影响 appA,还会影响 appB。我想知道主管如何在伞式应用程序中工作、他们的容错策略以及如何有效处理此类情况。
我用 wxwidget 检查监督树,有两个单独的监督者。但为什么在我的例子中要杀死这两个应用程序呢?
任何链接或解释将不胜感激。
作为起点,我们定义一个包含 :kv_server 和 :kv 应用程序的版本。我们还将为其添加一个版本。打开伞根目录中的 mix.exs 并添加到 def 项目中:
releases: [
foo: [
version: "0.0.1",
applications: [kv_server: :permanent, kv: :permanent]
]
]
定义了一个名为 foo 的版本,其中包含 kv_server 和 kv 应用程序。它们的模式设置为:永久,这意味着,如果这些应用程序崩溃,整个节点将终止。这是合理的,因为这些应用程序对我们的系统至关重要。
https://elixir-lang.org/getting-started/mix-otp/config-and-releases.html#releases