nodejs架构

node架构5.png

Native modules
  • 当前层内容由JS实现
  • 提供应用程序可直接调用库,例如fs、path、http等
  • JS语言无法直接操作底层硬件设置,如果想通信还需要胶水层桥梁

    Builtin modules “胶水层”
  • 文件的读写行为等

  • 主要内容由c++编写而成

    底层
  • V8:执行JS代码,提供桥梁接口

  • Libuv:事件循环、事件队列、异步IO等问题
  • 第三方模块:zlib、http、c-ares等

    nodejs与JavaScript

    nodejs1.png

    Node的简介

  • 起初是为了实现高性能的web服务器,后来慢慢发展成一门服务端“语言”

  • IO是计算机操作过程中最缓慢的环节

BS架构6.png

多线程、进程
  • Java语言,使用多并发多进程线程处理
  • 解释:点餐,有多少个客人,配多少个服务员,问题是如果有特别多的客人,会导致服务员不够,客人无响应

    应答者模式(重要)
  • 出现Reactor模型,单线程完成单线程工作(应答者模式)

  • 解释:例如点餐,保留一个服务员,让客人去点餐,当客人点餐行为结束后,呼叫服务员就OK了
  • Reactor模式下实现异步IO、事件驱动
  • Node结合Reactor模式,结合JS本身的单线程、事件驱动的架构、和异步编程的特性,让单线程远离阻塞,通过异步非阻塞的IO更好的使用CPU资源,实现高并发处理

  • 不适用的情况,比如客人不需要思考吃什么,而是立即点餐,这个时候,一个服务员是不够的,是CPU密集型

  • Node处理的更多的是IO密集型的并发请求,而不是大量且复杂的业务处理

bs2.png