我正在做一个教程,它说"在本指南中,我们将学习如何构建一个完整的Elixir应用程序,它有自己的监督树,配置,测试和更"
简单来说,Elixir的监督树是什么?
谢谢!
答案 0 :(得分:13)
在Erlang和Elixir应用程序中,通过使用顶级“主管”进程来强制执行结构,该进程启动应用程序中的其他进程。那些其他过程可以包括其他主管,它们也有自己的孩子,这种递归结构采用树的形状,因此是“监督树”。对进程的监督使得Erlang / Elixir具有容错功能,因为故障被隔离到树的某个分支,该分支的主管可以重新启动失败的子进程,也可以让自己失败,将故障冒出来到树上的下一位最高管理员。
答案 1 :(得分:0)
由于你已经标记了Erlang,我将回答这个Erlang的观点。但是Erlang,Elixir也是如此。
Erlang是一种面向并发的编程语言。意味着它建立起来处理并发性。电信/协议相关应用中特别需要的一个主要特征。几乎每种编程语言都有一种处理并发操作的机制。
例如,
简明英语的演员模型
在演员模型中,我们有两种类型的过程。
基本上,主管负责监督工人流程。而已。如果我们想创建一个工作流程来执行一些工作,我们请主管为我们创建它。如果工人死亡,主管将为您重新启动它。您不必担心工人流程的健康状况。此外 主管也可以是其他主管。
工作进程可以执行某些任务。而已。它将执行任何分配的任务,然后死掉。如果由于非正常原因导致死亡/崩溃,其主管将重新启动工作进程以执行其预期任务。
总的来说,我们可以有一个根管理员(称之为S0)来管理2个主管S1,S2。 S2管理另一个管理员S3。 S3监督5个工人流程,即W1-W5。整个层次结构是Erlang / Elixir 中的监督树。
以下是RADIUS协议相关项目中的示例监督树。 https://github.com/sigscale/radierl/blob/master/doc/supervision.png
有很多与演员模型相关的东西,如消息传递等。This将是了解演员模型的好地方。