Skip to content

Latest commit

 

History

History
74 lines (42 loc) · 1.8 KB

node.md

File metadata and controls

74 lines (42 loc) · 1.8 KB

NodeJS是什么

JavaScript runtime built on Chrome's V8 事件驱动 非阻塞IO模型

阻塞: I/O时进程休眠等待I/O完成后进行下一步

非阻塞: I/O时函数立即返回, 进程不等待I/O完成

事件驱动 I/O等异步操作结束后的通知

观察者模式

工作原理

nodejs通过事件循环机制快速分发处理事件,这是node最核心的特性

nodejs线程会持续进行事件循环,直到所有任务都完成后才退出。当有事件发生时,node会触发相应的回调函数。(同一时刻只有一个回调函数被执行)

** 基于非阻塞API的事件驱动编程**

nodejs优势

在处理高并发.I/O密集场景性能优势明显

  • cpu密集: 压缩 解压 加密 解密
  • IO密集: 文件操作 网络操作 数据库

web常见场景

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

高并发应对之道

  • 增加机器数
  • 增加机器的cpu数 -- 多核

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

多进程: 启动多个进程 多个进程可以一块执行多个任务

线程: 进程内一个相对独立的 可调度的执行单元, 与同属一个进程的线程共享进程的资源

多线程: 启动一个进程 进程内启动多个线程 这样 多个线程也可以一块执行多个任务

Nodejs的单线程

  • 单线程只是针对主进程, IO操作系统底层多线程调度
  • 单线程并不是单进程 可以使用多进程

常用场景

  • WEB SERVER
  • 本地代码构建

特点

  • 异步io
  • 事件与回调函数
  • 单线程

处理cpu密集的情况

  • 用一部分进程用于计算, 通过进程间的消息传递来传递结果

  • nodejs可以用使用c++编写的模块来应对cpu密集的情况