erlang - 一次性密码 : how to supervise non-OTP components?

标签 erlang high-availability erlang-otp erlang-supervisor mochiweb

我正在构建一个 Erlang/OTP 系统,其中包含 MochiWeb Web 服务器、一些自定义 Erlang/OTP 应用程序和一些非 native 组件,如下所示:

  • 一个 CouchDB 数据库,用于存储 MochiWeb Web 服务器的状态和持久数据(用户、帐户等)
  • 一个旧的 PostgreSQL 数据库,用于存储一些其他实体(订单、帐户等;客户要求:无法迁移到 CouchDB,数据应按原样使用);
  • Asterisk 服务器,用于向系统用户提供电话通知。

我希望实现高水平的正常运行时间和可用性,因此我想知道监视系统的那些非 Erlang/OTP 元素的最佳方法是什么。基本上,我希望系统的每个元素都受到监督、监控,并在需要时重新启动。对于 Erlang/OTP 应用程序来说很容易实现,但我不知道如何使用非 Erlang 组件来实现这一点。


我应该将它们包装为 Erlang/OTP 应用程序并包含到 OTP 监督树中吗?

或者我应该使用一些第三方软件工具来监控和监管 Erlang/OTP 系统的那些非 Erlang/OTP 组件吗?

最知名的做法是什么?

最佳答案

答案是这取决于:P

我见过这两种方法的使用,但我不太确定其中一种方法是否比另一种方法更有优势。我的直觉是选择一个通过 erlang 内部的端口管理应用程序的应用程序。这样,您就有了一种很好的集中方式来了解是否出现问题,并且可以轻松解决问题。

关于erlang - 一次性密码 : how to supervise non-OTP components?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574593/

相关文章:

compilation - 为什么Erlang编译:file does not report error for unknown options?

unicode - {html, ...} 中的雅司病 unicode 符号

database - 高可用、无单点故障的小型数据库解决方案

linux - Redhat 集群客户围栏失败

ubuntu - cucumberl(Erlang)/Ubuntu 错误,无法执行 .feature 文件

string - Erlang:如何将 Atom 转换为 String?

algorithm - 你能使用权重来避免群体中的脑裂吗?

erlang - 在 Erlang 中定期做某事的最佳方法是什么?

erlang - 在 init 中向 self() 发送消息是不是很糟糕?

erlang - 为什么我的主管在初始化时失败并带有 badarg?