0

我的应用程序使用 node.js,因为 node.js 和 Mongo 是天作之合。但我想知道这一点:

我的服务器应用程序在单个进程中运行。Node.js 是异步的,但是是单线程的,这是否意味着节点不会同时向 mongo 服务器发送两个查询?

在服务器上,Mongod 使用 5 个工作进程运行。那些有必要吗?我可以把它减少到一个,它也能正常工作吗?(如果是这样,怎么做?)

或者,也许有一种方法可以让我的节点应用程序有效地在多个进程上运行。

4

2 回答 2

1

这是否意味着该节点不会一次向 mongo 服务器发送两个查询?

  1. 事实上,Node 会同步向 mongo 发送请求。然而,发送请求是在心跳中完成的(通常是低毫秒范围)。

  2. 数字粉碎的事情发生在 mongo 方面,它必须做做出响应的艰难工作。这就是 mongo 工作进程的用途,并且是并行完成的(5 个工作人员等于 5 个线程)注意:当 mongo 计算这个响应时,节点不会阻塞

  3. 最后,mongo 发送它的响应,您使用(异步)回调在节点中捕获该响应。

ps:所以imo不需要集群。它是很好的异步,因为它是。(除了用大量请求访问 mongo 之外,很可能是 IO 绑定的,因此在这种情况下,将其“集群”以便其他 cpu 可以分担负载不会有太大帮助。

hth

于 2012-05-25T00:30:13.870 回答
0

这基本上应该回答你的问题:

http://nodejs.org/api/cluster.html

如果没有,那么它使您能够为运行代码的特定部分的节点应用程序创建子进程。

于 2012-05-24T10:31:36.887 回答