Nodejs的简单介绍

1、node的简单介绍

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境

2、node 三大特性

  • 单线程
  • 非阻塞 I/O
  • 事件驱动

三大特性解决的问题:服务器高性能瓶颈问题

请先看看这个,可能有利于理解。

前后端交互

传统的前后端交互如图,代码层面只能在 请求响应服务端 做优化IO交互式跟硬件相关,只能靠优化硬件设备了,成本很高。

线程在I/O交互的时候比较耗时,那么这个时候先抽空去接其他用户来喝茶的话,那么宏观上一个线程可以接待很多客人,接客这是同步的,答应帮忙的I/O操作当做异步任务挂起。也就是说先答应着许多客人要帮忙的事情,然后把所有客人,简单的那一部分先做,难的那一部分(IO耗时多)就慢慢来处理。这样的话,一个线程兄弟就可以应付很多个客人了,但是同时的话,如果一个客人突然发脾气了,把线程毒打了一顿,线程兄弟被打废了。那么线程兄的其他客人就没有人来为他们服务了。这个时候老板就难受了,钱没了。

2.1 单线程

2.1.1 单线程的优势
  • 系统不会为每一个新用户创建新线程,当有新的用户请求时,通过事件监听,处理新的用户请求(IO操作不会阻塞线程)。一个线程可以在宏观上并行处理多个用户请求。
  • 减少线程的创建、销毁时间。
2.1.2 单线程的劣势
  • 一个用户的操作使线程出现问题,则同一线程的其他用户全部遭殃。

2.2 非阻塞 IO

传统单线程中,线程会等待IO操作返回结果后,再将数据返回给服务器处理,那么这个IO操作的时候,线程处于闲置,十分浪费资源。

因为js本身具备异步特性,数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。

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

2.3 事件驱动

在Node中,客户端请求建立连接,提交数据等行为,会触发相应的事件。在Node中,在一个时刻,只能执行一个事件回调函数,但是在执行一个事件回调函数的中途,可以转而处理其他事件(比如,又有新用户连接了),然后返回继续执行原事件的回调函数,这种处理机制,称为“事件环”机制。

底层代码中,近半数都用于事件队列、回调函数队列的构建

2.4 三者联系

单线程要接待多个客人,所以不能太专一帮一个客人立刻 做完所有事情,所以IO操作就挂给回调处理,通过事件驱动知道了IO啥时候返回结果了,再去交付给对应的客人。

三者都是一条链上的,缺一不可。

参考文章

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值