一个进程中有多个事件处理程序?或者在流程之间分配

时间:2013-09-12 07:06:22

标签: node.js event-handling express

我有一些Node.js API应用程序。它们都遵循非常相似的模型。

有一个HTTP服务器(express)侦听请求,并对插入请求进行排队。

还有另一个侦听此队列的事件处理程序(它当前在mongodb中,但它可能是redis或其他任何东西),如果找到则处理项目,并在固定的时间间隔后再次尝试。

由于我的服务器都是多核实例,我已经分叉子进程来分配负载。但是目前,这些进程中的每一个都有这些事件处理程序(HTTP和队列处理程序)。

哪种方法更好?将处理程序分成不同的进程,或者在每个进程中都有两个处理程序(我目前的设置)?大约90%的API调用导致向队列中添加项目,稍后需要由队列处理程序处理。

我最初将这两个节点应用程序分离为两个不同的节点应用程序,但我将它们合并为一个,以便在服务器端更容易地进行流程和应用程序管理。

1 个答案:

答案 0 :(得分:1)

查看12-factor应用,该应用建议为不同的独立任务运行单独的应用。但是,我建议在同一代码存储库中托管所有任务,以便更容易地进行端到端测试并使它们保持同步。然后,使用Procfiles之类的技术启动不同应用程序的多个实例。