node.js的三个特点:
1.单线程:
在java,PHP或net等服务器端语言中会为每一个客户端链接创建见一个新的线程,每个线程耗费大约2mb内存——即8gb内存服务器可以同时连接最多4000个用户(故需要增加服务器数量)。
而node.js仅使用一个线程(不健壮,但约20mb)。当用户连接会触发内部事件,通过非阻塞和事件驱动机制让js宏观上并行。8gb内存——40000用户。当前请求(计算)暂停,其他请求放入事件站循环,当当前请求需要数据库时会被放入事件站中,即:node.js学习日志
i/o读数据库,这个过程中node.js可以处理下一个请求,直到i/o返回值,继续进行前请求。
使操作系统完全不再有线程创建·销毁的事件开销
能使cpu利用率百分之百
一个用户线程的崩溃将导致所有用户线程崩溃。
2.非阻塞i/o:
传统的线程处理机制中,执行了i/o访问数据库代码后,整个线程都讲停下来等待数据库返回值,随后进行下一步代码。即这种机制下的i/o阻塞了程序的执行。而node.js在执行访问数据库时会立即执行后面的代码
如:
fs.readfile(“text1”,function(){

}
a++;
其中a++语句不会被访问数据库代码阻塞运行。
机制:线程的事件循环不断检查是否有未处理的事件并依次处理。完成事件的调动。
3.事件驱动:
客户端请求连接,提交数据等行为会触发相应的事件(node中同一时刻一个线程只能执行一个回调函数,中途可以处理其他事件——事件环)node.js学习日志

相关文章: