在 NodeJS 中使用 Web Worker 实现多线程真的有优势吗?
Would it be really an advantage to achieve multi-threading using web workers in NodeJS?
我觉得这个问题很明确。 JavaScript 是单线程的,NodeJS 仍然取得了令人难以置信的性能。我们可以认为 multi-threading 会进一步提升 NodeJS 性能,但在某些情况下可能是错误的。
例如,我目前正在使用 NextJS 构建 starter project。我想知道在单独的线程中处理每个请求是否值得。
谢谢!
据我所知在生产模式下 nodeJs "usually" 用作:
- nginx 服务器(用作安全层和 HTTPS 代理)
- 子NodeJs进程数(数量===核心数)
这意味着所有核心都被使用了,
请求由单核处理,
服务器一次处理多个请求
===更新===
如果你想将单个请求处理分成多个线程 - 那么请记住 cross-process NodeJS 中的通信是昂贵的,你需要将大量任务委托给其他 threads/webworkers
如果您认为需要将应用拆分为多个线程 - 考虑使用微服务架构,例如使用 http://senecajs.org/
我觉得这个问题很明确。 JavaScript 是单线程的,NodeJS 仍然取得了令人难以置信的性能。我们可以认为 multi-threading 会进一步提升 NodeJS 性能,但在某些情况下可能是错误的。
例如,我目前正在使用 NextJS 构建 starter project。我想知道在单独的线程中处理每个请求是否值得。
谢谢!
据我所知在生产模式下 nodeJs "usually" 用作:
- nginx 服务器(用作安全层和 HTTPS 代理)
- 子NodeJs进程数(数量===核心数)
这意味着所有核心都被使用了,
请求由单核处理,
服务器一次处理多个请求
===更新===
如果你想将单个请求处理分成多个线程 - 那么请记住 cross-process NodeJS 中的通信是昂贵的,你需要将大量任务委托给其他 threads/webworkers
如果您认为需要将应用拆分为多个线程 - 考虑使用微服务架构,例如使用 http://senecajs.org/