node项目分析-FE分享

一、概念知识

1. 理解Node.js

  1. 简单的说Node.js 就是运行在服务端的 JavaScript
  2. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台
  3. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好
  4. 结构组成:

 node项目分析-FE分享_第1张图片

2. 执行机制:TODO:参考从原理上理解NodeJS的适用场景;有时间再去看看进程和线程

NodeJS是异步单线程的

在Node.js中,绝大部分API都是异步的,有一个很形象的故事描述了JAVA和Node.js的区别,JAVA是一个餐厅100个服务员对应100客户,Node.js是一个服务员玩命干,也对应100个客户,上菜的速度很大一部分取决于厨师的做菜速度 

node项目分析-FE分享_第2张图片

  • 关于nodeJS单线程的理解

      Node.js的单线程并不是真正的单线程,只是开启了单个线程进行业务处理(cpu的运算),同时开启了其他线程专门处理I/O。当一个指令到达主线程,主线程发现有I/O之后,直接把这个事件传给I/O线程,不会等待I/O结束后,再去处理下面的业务,而是拿到一个状态后立即往下走,这就是“单线程”、“异步I/O”。

  • nodeJS的事件主要是网络请求、文件I/O等
  • 什么是I/O操作:

    IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。(廖雪峰)

  • 语言对比-处理请求
    • Java/PHP如和处理:每个连接都会生成一个新线程,每个新线程可能需要2MB的配套内存(eg:在一个拥有8GBRAM的系统上,理论上最大的并发连接数量是4,000个用户);因此用户量增长,只有扩容。【所以在传统的后台开发中,整个Web应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。这个不同的架构承载的并发数量是不一致的。】
    • Node:更改连接到服务器的方式。Node 声称它不允许使用锁,它不会直接阻塞 I/O 调用。Node在每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。
      • 但是,非IO、网络通信等耗时比较

你可能感兴趣的:(node.js)