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