多个应用程序与单个应用程序和主管层

时间:2014-12-11 14:19:03

标签: erlang otp

我正在开发一个Erlang项目,该项目将许多不同的Erlang应用程序捆绑到一个版本中。每个应用程序都有一个非常简单的结构 - 顶级应用程序文件,然后是管理单个gen_server的单个主管。它使用rebar / reltool来构建版本;作为一个发布noob,我非常惊讶于必须在rebar.config和reltool.config中使用的奇怪配置选项,以使整个过程发挥作用。

然后我发现了erlang.mk和relx,这似乎是一种更健全/更简单的构建版本的方式。但是,似乎erlang.mk只适用于单个顶级应用程序(即一个与底层项目同名的应用程序)。让我想知道的是,考虑到每个应用程序的简单性,我的原始结构是否真的最佳?单个应用程序与单个顶级管理程序,然后是第二层管理程序,每个管理我的gen_servers之一,这可能没有意义吗?然后我可以使用erlang.mk并希望将一大堆与钢筋相关的复杂性移除到讨价还价中。

那么:一方面有关使用多个应用程序的优缺点的建议,另一方面是使用一个额外的中间监督层的单个应用程序?

1 个答案:

答案 0 :(得分:1)

Erlang中的应用程序是一个可重用的组件,可以作为一个整体启动或停止。它可能是一个库,不需要启动或停止。我想问自己一个问题:

“我可以将此应用程序放在github上,以便其他人可以使用它吗?”

  1. 如果它足够通用且答案是“是”,或者它只与系统的其余部分松散耦合,那么将其作为应用程序。
  2. 如果它只能在你的项目中使用,那就不要打扰了。
  3. 我不太了解erlang.mk,但它应该能够在顶层处理更多应用程序。如果没有,那么rebar3 has relx integration。在这里你有project page