这几天学习了Node.js,果然非同凡响, 那么,他的非凡支持有哪些呢?
1, 服务端javascript
使用google的V8引擎,node.js使得javascript能够运行在Server端,也就是从这一天开始,
javascipt才真正扬眉吐气,可以和他的大哥Java平起平坐, 这不能不说是一个非凡。
2,单线程, 异步处理
一般情况下,我们提到异步,第一反应肯定是多线程。单线程?怎么做到异步呢?
node.js通过event loop架构,实现了单线程异步处理,让你感受它的非凡。
说到event loop技术,不能不提webserver的多用户并发访问,如何高效处理的问题。
业界的两个代表是Apache和Nginx。 Apache使用多线程架构, Nginx使用Event Loop架构。
两者其实各有千秋, Apache针对每个Client请求都建立一个线程,这样随着线程增多,要求的内存必然同比例增多。
这就要求在构建系统时,要考虑最大的用户并发数,并有一定的余量,从而来应对特殊情况。
实际上就是为了解决这个问题, Event Loop才应运而生。 Event Loop使用单线程, 可怎么解决并发请求问题呢。
答案就是NO Blocking(非阻塞)。
何谓非阻塞, 简单的说就是不用等待数据的IO操作,就可以进行下一步处理的方式。为了实现异步并行,就必须要使用
Callback(回调)。也就是说Event Loop就是在Loop中,一旦有某个Event发生时,CallBack会被调用,从而进行response。
这样用一个线程就够了,内存和Client请求不成比例,从而降低了Server 瘫痪风险。
当然Event Loop也有缺点,那就是所有的处理必须是非阻塞, 如果有阻塞发生,所有的处理就停止啦。