运行守护程序的 Erlang/OTP 应用程序的行业标准?

Posted

技术标签:

【中文标题】运行守护程序的 Erlang/OTP 应用程序的行业标准?【英文标题】:Industry standard for running daemonized Erlang/OTP applications? 【发布时间】:2015-02-12 08:11:42 【问题描述】:

一些现代基础设施组件,例如 Yaws 和 CouchDB 可以通过

安装在 Ubuntu 上
sudo apt-get install

然后就可以开始了

service_name start 或简单的service_name

我想知道这种方法和 Erlang/OTP 方法之间是否有任何区别,即将OTP release 上传到生产服务器,然后使用 rebar 生成的脚本启动它。

行业标准是什么?安装/启动基于存储库的二进制文件或上传/启动 rebar 生成的版本?

此外,基于存储库的二进制文件是否具备所有 OTP 功能,例如 OTP 应用程序结构、监督以及通过控制台附加到实时应用程序的选项?

【问题讨论】:

【参考方案1】:

每次,你在启动 erlang,你就在启动一个版本。甚至,如果你只在终端中输入erl,它会运行一个版本(你可以在erlang_rootdir/releases/name_of_release 中找到.boot.rel.script 文件。

我认为这回答了您的最后一个问题:从存储库安装的软件包仍然具有 OTP 结构、监督和所有优点。只有几个 bash 脚本,这使得启动和停止它们对习惯service_name start 的人更友好。您还应该能够找到类似于 rebar 生成的脚本。

检查,这些文件在哪里,只需cat 他们。你应该看到,他们只是启动 Erlang 发布。

你不能用包管理器做的唯一事情是热代码升级。大多数包管理器只是简单地停止正在运行的应用程序,安装新版本并重新启动它。在 Erlang 中,您可以升级正在运行的版本,但这是非常高级的东西。除此之外 - 使用操作系统包没有任何缺点。

【讨论】:

以上是关于运行守护程序的 Erlang/OTP 应用程序的行业标准?的主要内容,如果未能解决你的问题,请参考以下文章

Erlang/OTP 生产应用部署简介

Erlang/OTP - 计时应用

Erlang OTP 应用程序设计

何时在 Erlang/OTP 应用程序中使用 gen_server

EMQ --集成搭建

使用 Erlang/OTP 构建容错软实时 Web 应用程序