在开发Erlang(和Riak)应用程序时的良好实践是什么?

21
我们正在学习Erlang/OTP和Riak(Core、KV、Pipe等),尝试构建一个开源的分布式应用程序。我们的项目将有很多依赖项:像erlang_js,protobuffs等工具,还有我们需要运行的服务,比如Riak KV。
在Python/Ruby/Node.js中,如果模块放置在与您的项目相关的标准子目录中,您可以引用它们,并在发布中打包它们。您只需在项目目录中启动一个shell,就可以轻松地使用模块进行测试等操作,只要遵循良好的实践即可。
在Erlang/OTP中组织开发环境的最佳实践是什么?如何让所有依赖项都可以访问(并轻松升级到最新版本),访问正在运行的节点的shell,进行测试,制作发布等操作?
1个回答

29
请查看rebar3:用于打包、模板化和管理Erlang/OTP应用程序的发布。您将在其中找到整个教程,了解如何使用它。
首先,请查看有关OTP的此教程,然后再切换到此教程,该教程向您展示了Erlang中的发布及其处理方式。在开发项目时使用此整本书作为参考资料,因为作者仍在逐步添加更多高级内容,您可能需要。
您还可以继续阅读Erlang应用程序以及检查下面的这些快速链接:

Erlang打包,Process One
由Chicago Boss Guys制作的OTP打包视频
Erlang依赖管理
Richard Jones关于打包带有依赖的Erlang项目的建议和示例
Maven工具及其在打包Erlang项目中的使用方法

最重要的是,请认真对待rebar。它在管理具有依赖性的Erlang应用程序方面非常重要。您可以随时在Stack Overflow上发布问题以获取任何进展的帮助。

在我忘记之前,请务必查看Riak社区的大量内容。

此外,重要的是要查看关于创建目标系统和如何使用Reltool处理发布的系统文档。Erlang的好处在于它有多种选项可以完成某件事情,只要以这种方式维护你的应用程序容易。通过目标系统,您将学习如何嵌入Erlang VM,如何在Solaris、VxWorks上运行Erlang应用程序,并使用erlsrv在Windows NT上创建Erlang应用程序作为服务。

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

net_kernel:allow(List_of_nodes)
允许暂时创建的节点连接。

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


1
非常感谢!这是一个相当完整的图片!我会仔细阅读所有内容,如果需要的话会发表更多问题。 - matehat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接