我正在构建一个 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/