Erlang OTP:如何监督非OTP组件?
我正在构建一个Erlang/OTP系统,它由一个MochiWeb web服务器、一些自定义Erlang/OTP应用程序和一些非本机组件组成,如下所示:Erlang OTP:如何监督非OTP组件?,erlang,high-availability,otp,erlang-supervisor,mochiweb,Erlang,High Availability,Otp,Erlang Supervisor,Mochiweb,我正在构建一个Erlang/OTP系统,它由一个MochiWeb web服务器、一些自定义Erlang/OTP应用程序和一些非本机组件组成,如下所示: 存储MochiWeb服务器状态和持久数据(用户、帐户等)的CouchDB数据库 用于存储其他实体(订单、账户等;客户要求:无法迁移到CouchDB,数据应按原样使用)的旧式PostgreSQL数据库 星号服务器,用于向系统用户提供电话通知 我希望实现高水平的正常运行时间和可用性,因此我想知道监控系统中非Erlang/OTP元素的最佳方法是什么
- 存储MochiWeb服务器状态和持久数据(用户、帐户等)的CouchDB数据库
- 用于存储其他实体(订单、账户等;客户要求:无法迁移到CouchDB,数据应按原样使用)的旧式PostgreSQL数据库李>
- 星号服务器,用于向系统用户提供电话通知
我应该将它们包装为Erlang/OTP应用程序并包含在OTP监控树中吗? 还是应该使用一些第三方软件工具来监控和监督Erlang/OTP系统的非Erlang/OTP组件? 最著名的做法是什么?答案是这取决于:p
两种方法我都见过,但我不太确定其中一种是否比另一种有优势。我的直觉是选择从erlang中通过端口管理应用程序的方法。这样,您就有了一种很好的集中方式,可以知道是否出现了问题,并且可以轻松地解决问题。因此,换句话说,我通过端口将所有非OTP软件打包到OTP应用程序中,并将其添加到我的OTP监管树中,对吗?这是一种方法是的。另一种方法是通过,比如说,
monit
在系统外保持运行。多亏了对monit的引用!它甚至似乎有一些基本的重启策略,可以通过它的控制文件来实现。我怀疑我是否能够通过Erlang端口启动Django或Asterisk。