21

我们逐渐熟悉 Erlang/OTP 和 Riak(Core、KV、Pipe 等)尝试依次构建开源分布式应用程序。我们的项目将有一堆依赖项:像 erlang_js、protobuffs 等工具,还有我们需要运行的服务,比如 Riak KV。

在 Python/Ruby/Node.js 中,如果模块放置在相对于项目的标准子目录中,您可以引用它们,然后将它们打包到发布中。您可以在项目目录中启动一个 shell,使用您的模块,进行测试等等,如果遵循良好的做法,所有这些都很容易。

在 Erlang/OTP 中组织开发环境的最佳实践是什么,所有依赖项都可以访问(并且可以轻松更新到最新版本)、对运行节点的 shell 访问、测试、发布等等?

4

1 回答 1

29

查看rebar3:用于打包、模板化和管理 Erlang/OTP 应用程序的发布。您将在那里找到有关如何使用它的完整教程。

先看看这个关于 OTP 的教程,然后你可以切换到这个向你展示版本以及它们在 Erlang 中如何处理的教程。在您开发项目时使用整本书作为参考,因为作者仍​​在逐步添加您可能需要的更高级的内容。

您可能还想继续阅读有关Erlang 应用程序的信息,然后查看以下这些快速链接:

Erlang Packaging, Process One
OTP Packaging Video by Chicago Boss Guys
Erlang 依赖管理
Richard Jones 关于使用依赖关系
Maven 工具打包 Erlang 项目的建议和示例以及如何使用它来打包 Erlang 项目

最重要的是,非常重视螺纹钢。这对于管理具有依赖关系的 Erlang 应用程序非常重要。您可以继续在 Stack Overflow 上发布您的问题,以便在您取得进展时获得任何帮助。

在我忘记之前,请从Riak 社区查看很多东西。

此外,查看有关创建目标系统以及如何使用Reltool处理发布的系统文档也很重要。erlang 的好处是它有几个如何做某事的选项,只要它易于以这种方式维护您的应用程序。对于目标系统,您将学习如何嵌入 Erlang VM,如何在 Solaris、VxWorks 上运行 Erlang 应用程序,以及使用erlsrv在 Windows NT 上将 Erlang 应用程序创建为服务。

通常,我们确保当操作系统启动服务器时,我们的应用程序会从它启动。迄今为止,在嵌入 Erlang/OTP VM 方面,Solaris 比任何其他操作系统都有更多的自定义。您始终可以使用Escript与(一个)嵌入式 Erlang VM 通信,其中 escript 创建一个允许连接到嵌入式 VM 的 erlang 节点(因此它们必须共享相同的 cookie)并且嵌入式 VM 必须允许临时创建的节点通过执行来连接

net_kernel:allow(List_of_nodes)

确保调用此方法以使您的嵌入式 VM 仅允许来自已知严格指定数量的节点的连接。

于 2011-11-19T09:04:37.210 回答