0

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

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

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

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

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

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

4

1 回答 1

1

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

于 2013-09-12T13:59:54.070 回答