nodejs是什么

nodejs是什么

nodejs是js runtime
使用事件驱动 和 非阻塞I/O 模型

非阻塞I/O

阻塞: I/O时进程等待I/O完成时进行下一步
非阻塞: I/O时函数立即返回,进程不等待I/O完成 (异步的感觉)

事件驱动

  • I/O等异步操作结束后的通知(遇到I/O,不等I/O执行完直接执行下面程序,等其执行完发射一个事件,对事件找其相应的处理程序)
  • 观察者模式

为什么偏爱nodejs

  • 前端职责范围变广
  • 适合I/O密集,高并发

cpu密集: 压缩,解压,加密,解密
I/O密集: 文件操作,网络操作,数据库

web常用场景

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

高并发应对之道

高并发: 单位时间访问量很大

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

进程

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

nodejs工作模型

cpu处理 -> I/O
cpu处理的速度远远大于I/O的
cpu相当于服务员 I/O相当于大厨 一个大厨对应一个服务员
这样其实减少服务员 减少到一个 就是开一个进程
这样没有占用cpu

线程

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

nodejs的单线程

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

nodejs常用场景

  • web server
  • 本地代码构建
  • 实用工具开发(小爬虫,但不是最佳的)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 不是一门语言 nodejs 是基于Chrome V8 的JavaScript运行环境nodejs 是事件驱动、非阻...
    bby365阅读 580评论 0 0
  • Nodejs是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染...
    mo_unique阅读 2,695评论 0 1
  • nodejs是非阻塞异步操作。 特点 1、Chrome V8引擎 2、事件驱动 3、非阻塞 I/O 4、单线程 如...
    SailingBytes阅读 7,393评论 0 4
  • 什么是NodeJS Node.js采用模块化结构,按照CommonJS规范定义和使用模块。模块与文件是一一对应关系...
    风起云涌Hal阅读 731评论 0 6
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,581评论 16 22