NodeJs简介

1、什么是NodeJs?

Node.js是一个让JavaScript运行在服务器的开发平台。

2、 NodeJs出现的背景

为了解决Web服务器的高并发性能问题(缩短发送到请求的时长)

3、 NodeJs的特征

单线程:Node.js在执行的过程中会维护一个事件队列,程序在执行时在进入事件循环等待下一个事件到来。优点是减少了内存的开销,缺点是如果某一个事情,进入了,但是被I/O阻塞了,所以这个线程就阻塞了。

非阻塞I/O:不会傻等I/O语句结束,而会执行后面的语句。

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

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

 阻塞模式下,一个线程只能处理一项任务,要想提高吞吐量必须通过多线程。而非阻塞模式下,一个线程永远在执行计算操作,这个线程的CPU核心利用率永远是100%。所以,这是一种特别有哲理的解决方案:与其人多,但是好多人闲着;还不如一个人玩命,往死里干活儿。

事件驱动:不管是新用户的请求,还是老用户的I/O完成,都将以事件方式加入事件环,等待调度。

4、为什么用  NodeJs

当前的服务器处理请求的方式有什么问题?

在Tomcat之类web容器中,对于每个连接都需要一个线程,当有新的http请求进来后,web容器便则会从线程池中获得一个线程来处理该请求(每个线程上下文大约占用 2 MB 的内存。在一个拥有 4 GB RAM 的jvm中,理论上最大的并发连接数量是 2,000个用户,当然,Tomcat容器也可以选择NIO方式来提高并发)。

Node对此进行了进一步的优化,对于每个连接,在 Node 引擎的进程中生成一个事件,而非分配一个线程或者采用多路复用。通过这种方式,nodeJs可以极大地降低内存资源的使用,实现其宣称的“能支持数万个并发连接”的目标。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Nodejs简介 Node.js® is a JavaScript runtime built on Chrome...
    rill_阅读 5,129评论 0 0
  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 13,877评论 4 56
  • 最近春天的风,让我最深感触的都是风的感觉,风大风吹,让人又恨又爱,独独没有清风缓缓吹,独立船头,遥望四处山的绿色,...
    三三蜗牛阅读 890评论 0 2
  • 闻冬 孟平深 这两个名字,是作者容光的小说《平生不晚》两位主角的名字。 其实这本书算不上什么经典名著,甚至在有些人...
    TEUB_七瑾阅读 6,765评论 0 0
  • 1.桥接模式概念 在《Head First Design Patterns》文中是这么介绍桥接模式的,“不仅可以改...
    lgy_gg阅读 1,462评论 0 1