NodeJS的优势

一、Node.js是什么?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

非阻塞I/O

  • 阻塞: I/O时进程休眠等待I/O完成后进行下一步
  • 非阻塞: I/O时函数立即返回,进程不等待I/O完成后进行下一步

事件驱动

  • I/O等异步操作结束后的通知
  • 观察者模式

二、为啥偏爱NodeJS

  • 前端职责范围变大,统一开发体验
  • 在处理高并发、I/O密集场景性能优势明显

CPU密集 VS I/O密集

  • CPU密集:压缩、解压、加密、解密
  • I/O密集:文件操作、网络操作、数据库

WEB常见场景

  • 静态资源读取
  • 数据库操作
  • 渲染页面

高并发应对之道

  • 增加机器数
  • 增加每台机器的CPU数——多核

进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位
多进程:启动多个进程,多个进程可以一块执行多个任务

NodeJS工作模型

NodeJS的优势_第1张图片

线程:进程内一个相对独立的、可调度的执行单元,与同属一个进程的线程共享进程的资源。
多线程:启动一个进程,在一个进程内启动多个线程,这样多个线程也可以一块执行多个任务。

注意:

  • 单线程只是针对主进程,I/O操作是系统底层多线程调度
  • 单线程并不是单进程

常用场景

  • Web Server
  • 本地代码构建
  • 实用工具开发

你可能感兴趣的:(#,NodeJS)