Node.js看起来很有趣,但我必须错过一些东西 - 不是Node.js只调整为在单个进程和线程上运行吗?
那么它如何扩展多核CPU和多CPU服务器?毕竟,尽可能快速地制作单线程服务器,但是对于高负载我想要使用多个CPU.同样可以使应用程序更快 - 似乎今天的方式是使用多个CPU并并行化任务.
Node.js如何适应这张图片?它的想法是以某种方式分发多个实例或什么?
因此,我了解Node.js的工作原理:它有一个侦听器线程,它接收一个事件,然后将其委托给一个工作池.工作线程在完成工作后通知侦听器,然后侦听器将响应返回给调用者.
我的问题是:如果我在Node.js中站起来一个HTTP服务器并在我的一个路由路径事件(例如"/ test/sleep")上调用sleep,整个系统就会停止运行.甚至是单个监听器线程.但我的理解是这个代码发生在工作池上.
现在,相比之下,当我使用Mongoose与MongoDB通信时,DB读取是一种昂贵的I/O操作.Node似乎能够将工作委托给一个线程并在完成时接收回调; 从DB加载所花费的时间似乎并没有阻止系统.
Node.js如何决定使用线程池线程与侦听器线程?为什么我不能编写睡眠的事件代码并且只阻塞线程池线程?
我无法确定node.js中的libuv是使用多核cpus还是仅使用时间切片在单核上运行其所有线程?由于node.js是单线程的,但libuv有自己的线程池,所以它是否使用多核cpu的所有内核?