我的应用程序使用 node.js,因为 node.js 和 Mongo 是天作之合。但我想知道这一点:
我的服务器应用程序在单个进程中运行。Node.js 是异步的,但是是单线程的,这是否意味着节点不会同时向 mongo 服务器发送两个查询?
在服务器上,Mongod 使用 5 个工作进程运行。那些有必要吗?我可以把它减少到一个,它也能正常工作吗?(如果是这样,怎么做?)
或者,也许有一种方法可以让我的节点应用程序有效地在多个进程上运行。
我的应用程序使用 node.js,因为 node.js 和 Mongo 是天作之合。但我想知道这一点:
我的服务器应用程序在单个进程中运行。Node.js 是异步的,但是是单线程的,这是否意味着节点不会同时向 mongo 服务器发送两个查询?
在服务器上,Mongod 使用 5 个工作进程运行。那些有必要吗?我可以把它减少到一个,它也能正常工作吗?(如果是这样,怎么做?)
或者,也许有一种方法可以让我的节点应用程序有效地在多个进程上运行。
这是否意味着该节点不会一次向 mongo 服务器发送两个查询?
事实上,Node 会同步向 mongo 发送请求。然而,发送请求是在心跳中完成的(通常是低毫秒范围)。
数字粉碎的事情发生在 mongo 方面,它必须做做出响应的艰难工作。这就是 mongo 工作进程的用途,并且是并行完成的(5 个工作人员等于 5 个线程)注意:当 mongo 计算这个响应时,节点不会阻塞
最后,mongo 发送它的响应,您使用(异步)回调在节点中捕获该响应。
ps:所以imo不需要集群。它是很好的异步,因为它是。(除了用大量请求访问 mongo 之外,很可能是 IO 绑定的,因此在这种情况下,将其“集群”以便其他 cpu 可以分担负载不会有太大帮助。
hth