32.Node.js应用相关问题

55 阅读1分钟

简介

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

特点

  • 异步(非阻塞)的I/O(I/O线程池)
    I/O文件、数据的操作:input写 output读
    同步阻塞的I/O(一般在CSS应用)
    I/O线程池:多个线程待命,无需频繁创建销毁线程,Node有线程池
  • 特别适合于I/O 密集型应用(相对于传统java服务器)
    频繁操作I/O
  • 事件循环机制
  • 单线程(成也单线程,败也单线程)
    如果想实现异步,就必须有自己的“事件循环模型”(浏览器管理模块处理回调:DOM时间管理模块、Ajax请求管理模块、定时器管理模块)
  • 跨平台
    Win、macOS、Linux、Docker

缺点

  • 回调函数嵌套造成的回调地狱
  • 单线程处理不好CPU密集型任务

web交互模型

stateDiagram-v2
【客户端】 --> 请求
请求 --> 【服务器端(单/多线程)】
【客户端】 --> 响应
响应 --> 【服务器端(单/多线程)】
【服务器端(单/多线程)】 --> I/O操作
I/O操作 --> 【数据库】
【数据库】 --> I/O操作
I/O操作 --> 【服务器端(单/多线程)】