nodejs是什么

作者: 猪猪9527 | 来源:发表于2017-11-12 22:27 被阅读6次

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是什么

    本文链接:https://www.haomeiwen.com/subject/ftzomxtx.html