【发布时间】:2018-05-31 01:56:02
【问题描述】:
node.js 是为每个客户端创建一个 node.js 实例,还是只有一个 node.js 服务器实例用于各种客户端,并且仅为每个客户端的路径创建唯一实例?
【问题讨论】:
标签: node.js multithreading server instance clients
node.js 是为每个客户端创建一个 node.js 实例,还是只有一个 node.js 服务器实例用于各种客户端,并且仅为每个客户端的路径创建唯一实例?
【问题讨论】:
标签: node.js multithreading server instance clients
Nodejs 不会为每个客户端创建新的服务器实例,其他选项也不会。
您可能认为 多线程 因为传统的多线程 Web 服务器会为每个客户端请求创建一个新线程,但是由于 node.js 运行的 JavaScript 是单线程的,所以答案是否定的 - 每个客户端请求由同一个线程处理。
这就是为什么 Node.js 和 JavaScript 经常与 blocking 这个词相关联,指的是如果你编写的代码需要很长时间才能完成,它会阻止所有其他用户得到服务。但是,您不必担心执行 I/O 时的阻塞,因为 Node.js (JavaScript) 是异步的——这意味着客户端请求在执行 I/O 操作(例如网络请求或磁盘读取)时不会相互阻塞。
要了解有关 Node.js 单线程的更多信息,请参阅此 S/O 答案:Why is Node.js single threaded?
【讨论】:
multithreaded web servers create a new thread for each client request 不完全是。这是一种旧方法。