【问题标题】:How does Node treat two o more users simultaneously?Node 如何同时处理两个以上的用户?
【发布时间】:2021-05-06 20:30:13
【问题描述】:

我有几个应用程序在后端使用Node,在前端使用React,效果很好,我使用axios 获取并发布从ReactExpress 的请求,然后我来回获取数据,然后在生产中我使用pm2 让一切正常运行。

我的问题是,当两个用户同时访问同一个应用程序时,Node 如何将其视为两个独立的实例或仅一个?

我正在考虑使用socket.io 来通知前端 Node 上发生的变化,我想知道这些通知是否会从后端发出,无论其他用户可能在做什么或不是。

谢谢。

【问题讨论】:

    标签: node.js reactjs express socket.io pm2


    【解决方案1】:

    您可能听说过 node.js 被称为“单线程”运行时。这只是部分正确。即使节点在处理器的单个线程上运行,它也会在线程池中运行其大部分任务,该线程池最多可以同时处理 4 个任务。 如果您想了解这一点,您可能需要查看节点事件循环,该循环描述了节点在每个“滴答”上经历的步骤。 因此,如您所见,节点通常不能在每个循环周期中处理一个但最多 4 个动作。但还有更多,要解决大型应用程序可能出现的性能问题,您可以在集群模式下运行节点。这允许您扩展线程池并添加多个节点实例,从而有效地处理高需求。

    请注意您的 socket.io 问题。正如您所看到的,在节点事件循环中处理之前,任务的高需求会排队,因此有时您需要等待。幸运的是,我们正在为创建最快的 JS 运行时而与大型技术竞争,所以这件事非常快。

    【讨论】:

    • 感谢您的回答,所以基本上如果我在节点上运行socket.io 并且用户在前端收到通知,这不会与同时使用同一应用程序的另一个用户冲突吗?跨度>
    • 我不这么认为,事件被安排在事件循环中,并且会一个接一个地处理。如果您将拥有如此多的用户,您会看到性能问题,请查看集群模式,您将被设置为 99.8% 的应用程序。如果它解决了您的问题,请随时接受我的回答。
    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多