【问题标题】:Unique supervisor / server names唯一的主管/服务器名称
【发布时间】:2016-09-08 04:38:39
【问题描述】:

我有一个主管结构,每个 (TCP) 连接都需要一个主管。现在似乎每个主管都需要自己的唯一名称,而这又需要是一个原子(至少这是我从错误消息中收集到的)。

一种解决方法是每次生成一个新原子,类似于a suggestion from the erlang-questions list

现在我了解到原子永远不会被清理,因此有可能被太多的连接 DoSed,耗尽原子空间。这是如何正确完成的?

【问题讨论】:

    标签: erlang erlang-otp erlang-supervisor


    【解决方案1】:

    这里涉及两种类型的名称,进程的注册名称和主管子级的标识符。

    不必为每个主管进程注册一个名称。启动主管进程有两个函数,supervisor:start_link/2 and supervisor:start_link/3start_link/3 启动主管并在给定名称下注册它,而start_link/2 启动主管而不为其注册名称。 (如果进程没有注册名称,唯一的方法是通过它的 pid 来引用它。)

    对于主管子进程的标识符,如果您的主管子进程数量不限(无论这些子进程是工人还是主管),您通常会使用特殊的重启类型simple_one_for_one。这意味着主管没有保留静态子规范列表(从 init 回调函数返回或添加到 supervisor:start_child 函数),而是拥有一个“模板”子规范,supervisor:start_child 函数创建基于该模板的“匿名”子级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-11
      • 2012-05-16
      • 2018-08-09
      • 2019-05-04
      • 2014-03-02
      • 1970-01-01
      • 2016-09-07
      • 2014-04-17
      相关资源
      最近更新 更多