一、使用Node.js能解决什么问题
对于PHP、JAVA、Python等服务端语言中,为每个客户端连接创建一个新的线程,而每个线程需要大约2M的内存,理论上,具有8GB内存的服务器可以同时连接的最大用户数为4000个左右,要让Web应用程序支持更多的用户,就需要增加服务器的数量,这样硬件的成本就增加了。
服务器所支持的最大同时连接用户量是一个主要的瓶颈。
Node.js是一个用于开发各种Web服务器的开发工具,运行的是高性能的V8 JavaScript脚本语言,
二、什么是V8JavaScript?
V8 JavaScript是由Google公司使用C++语言开发的一种高性能JavaScript,该引擎并不局限于在浏览器中运行。在V8引擎内部使用了一种全新的编译技术,高端的JavaScript脚本代码与开发者编写的低端的C语言具有非常相似的执行效率
三、Node.js的两种机制
- 非阻塞型I/O
JavaScript的一个特点是它只支持单线程,因此不需要担心会造成死锁的现象。
与客户端脚本语言不同的是,Node.js中为V8 JavaScript提供了非阻塞型I/O机制。
例如,在访问数据库取得搜索结果的时候,在开始访问数据库之后、数据库返回结果之前,存在一段时间的等待。
在传统的单线程处理机制中,在执行了访问数据库的代码之后,整个线程都将暂停下来,等待数据库返回查询结果之后才能继续执行其后面的代码。也就是I/O操作阻塞了代码的执行,极大的降低了程序的执行效率。
由于Node.js中采用了非阻塞型I/O机制,因此在执行访问数据库的代码之后将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中执行,从而提高了程序的执行效率。 - 事件环
在Node.js中,在一个时刻只能执行一个事件回调函数,但是在执行一个事件回调函数的中途可以转而执行其他事件,然后返回继续执行原事件回调函数,这种处理机制叫事件环机制
四、Node.js适合开发的场景?
当应用程序需要处理大量并发的输入/输出,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候