【问题标题】:Are multiple workers necessary when async?异步时是否需要多个工作人员?
【发布时间】:2012-05-24 09:01:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: node.js mongodb asynchronous multiprocessing


    【解决方案1】:

    这是否意味着节点不会同时向 mongo 服务器?

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-11-21
        • 2020-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-09
        • 1970-01-01
        • 2020-04-08
        • 1970-01-01
        相关资源
        最近更新 更多