简单快速搞懂Node.js是什么?

一.简介

  • 官方介绍:Node.js 是基于 Chrome 的 V8 JavaScript 引擎的 JavaScript 运行。Node.js采用事件驱动、非堵塞 I/O 模型,使其轻量化和高效。
  • 简单一句话:node.js是JavaScript运行在服务端的一个环境,它将前端语言的编程思想转移到了服务端。用js也能写服务端代码搭建后台了。

二.node.js的3个特点

(1) 单线程

  在常见的Java、PHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的线程。Node.js仅仅使用单线程。当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Node.js程序看起来好像也是一起处理的。Node.js的单线程仅仅指JavaScript运行再单线程中,并不是Node.js平台是单线程。

(2) 非阻塞I/O

  当在访问数据库取得数据的时候。在传统的单线程处理机制中,在执行了访问数据库代码之后,整个线程都将暂停下来,等待数据库返回结果,才能执行后面的代码。也就是 I/O阻塞了代码的执行。

  而Node.js中采用的非阻塞型I/O机制,在执行了访问数据库的代码之后将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。

  当某个I/O执行完毕时,将以事件的形式通知执行I/O操作的线程,线程执行这个事件的回调函数。为了处理异步I/O,线程必须有事件循环,不断的检查有没有未处理的事件,依次予以处理。

   阻塞模式下,一个线程只能处理一项任务,要想提高吞吐量必须通过多线程。而非阻塞模式下,一个线程永远在执行计算操作,这个线程的CPU核心利用率永远是100%。就像餐厅的服务员,一个服务员服务一个客人等于阻塞模式,一个服务员可以在服务完一个客人后继续服务下一个客人等于非阻塞式。

(3) 事件驱动(eventLoop)

   在Node.js中使用的是单线程模型,对于所有的I/O都采用异步请求方式,避免了频繁的上下文切换。Node.js在执行的过程中会维护一个事件队列,程序在执行时进入事件循环,等待下一个事件的到来,每一个异步式I/O请求完成后会被推送到事件队列,等待程序进程进行处理。Node.js进程在同一时刻只会处理一件事情,完成后立即进入事件循环检查并处理后面的工作。

二.Node.js开发优缺点及运用场景

优点:

  1. 处理高并发
  2. 对I/O密集型应用适用性高

缺点:

  1. 由于Node.js单线程的特点,它无法高效的利用CPU,无法利用多核CPU。所以对于高运算,对CPU利用高的应用性能稍差。
  2. 由于js单进程,单线程的特性。导致系统可靠性低,一旦代码某个环节崩溃,整个系统都崩溃。
    (但现在针对这些问题都有对应的解决方案。)

Node.js实际上可以开发任何你想得到的应用。但结合它的优缺点,node.js最适用,性能最好的是有高并发,I/O处理密集,业务逻辑量较少的应用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值