根据我的理解,Node.js有一个事件循环的主线程,它处理所有传入的请求并异步执行IO,而传统的多线程Web服务器使用一个单独的线程处理每个传入的请求(如果看到的话,所有内容都是异步的)从主线程的角度来看)。
就IO而言,由于IO操作在两种情况下都是异步处理的,所以我不太清楚Node.js如何在这里提升性能。
就CPU而言,Node.js只是为了更好的内存使用而交换响应能力吗?举一个极端的例子,假设没有IO,那么Node.js总结了几个线程'合而为一。
我发现Node.js的一个主要优点是隐藏了框架背后的多线程编程细节,并简化了程序员的工作。但有人可以帮助解释一下性能优势是什么吗?
帮助表示赞赏。
答案 0 :(得分:2)
Node.js当然要求您设计代码的方式不会在主线程中进行密集计算。您没有每个请求的自动线程,但如果有意义,可以显式生成它们。
这个想法是通常,响应请求的计算量非常小,因此通过让服务器处理其他请求,单个线程可以处理数十万个并发客户端而请求所需的任何冗长的过程都是异步完成的。
Node.js(和使用相同单线程设计的nginx)比基于线程的服务器更快,使用的资源更少,因为它们针对这些典型请求进行了优化。当你确实需要线程时,它们仍然保持快速,但重点是,通常你不需要,而nginx是一个更好的例子,针对提供静态资源进行了优化而根本没有任何计算。
此外,Node.js应用程序使用相同的JavaScript上下文来处理每个请求,在某些应用程序中,当您执行计算时,这会节省大量开销。