我有一些 Node.js API 应用程序。它们都遵循非常相似的模型。
有一个 HTTP 服务器(express)侦听请求,并将插入请求排队。
还有另一个事件处理程序监听这个队列(它当前在 mongodb 中,但它可能是 redis 或其他任何东西),如果找到则处理项目,并在固定时间间隔后再次尝试。
由于我的服务器都是多核实例,因此我派生了子进程来分配负载。但目前,这些进程中的每一个都有这些事件处理程序(HTTP 和队列处理程序)。
哪种方法更好?将处理程序分成不同的进程,还是在每个进程中都有两个处理程序(我当前的设置)?大约 90% 的 API 调用会导致向队列中添加一个项目,稍后需要由队列处理程序处理该项目。
我最初将这两者分离为两个不同的节点应用程序本身,但我将它们合并为一个以使服务器端的流程和应用程序管理更容易。