在 Erlang(和 Riak)中开发应用程序时的良好做法?

Posted

技术标签:

【中文标题】在 Erlang(和 Riak)中开发应用程序时的良好做法?【英文标题】:Good practices when developing an application in Erlang (and Riak)? 【发布时间】:2012-01-01 19:16:02 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

首先查看 this tutorial on OTP,然后再查看 switch to this one,它会向您展示版本以及它们在 Erlang 中的处理方式。在您开发项目时使用此 entire book as reference,因为作者仍​​在逐步添加您可能需要的更多高级内容。

您可能还想继续阅读有关 Erlang Applications 的内容,然后查看以下这些快速链接:

Erlang Packaging, Process OneOTP Packaging Video by Chicago Boss GuysErlang Dependency ManagementRichard Jones Advice and examples on Packaging Erlang Projects with DependenciesMaven Tool and how it is used in packaging Erlang Projects

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

在我忘记之前,请查看 Riak Community 中的很多内容。

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

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

net_kernel:allow(List_of_nodes)

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

【讨论】:

非常感谢!这是一张比较完整的图!如果需要,我将通读所有这些并发布更多问题。

以上是关于在 Erlang(和 Riak)中开发应用程序时的良好做法?的主要内容,如果未能解决你的问题,请参考以下文章

构建 riak:“rebar_core 中未捕获的错误”

在 Riak 中存储二进制数据的缺点?

有大量节点或二进制数据时的 Erlang 消息

与 Erlang 中的映射模式匹配时的非法表达式

建立Erlang开发环境

大神来了Elixir语言设计者José Valim:释放Erlang VM的能量