Node.js 基本架构

2,269 阅读1分钟

image.png

原文地址

中间层之下

Node.js 是运行于操作系统之上,而操作系统上一层:

  • V8 JavaScript Engine: 由内存堆、调用栈和垃圾收集器组成,把 JS 代码转换成给定操作系统的机器码
  • libuv: 由线程池、事件循环与事件队列组成,是处理非阻塞异步 I/O 操作的多平台 C 语言库,提供了机制处理诸如文件系统、DNS、网络、子进程、管道、信号量控制、轮询、数据流
  • c-ares: 处理 DNS 请求的 C 语言库
  • llhttp: 解析 HTTP 请求/响应(以前使用 http-parse)
  • OpenSSL: 全功能支持 TLS/SSL 协议的工具包,也是个通用加密库
  • zlib: 用于同步、异步和数据流的压缩解压

中间层

  • Node.js Bindings:将底层 C/C++ 写的库的接口暴露给 JS 环境
  • Node.js Standard Library: 提供了 Node.js 本身的核心模块,见文档
  • C/C++ AddOns:用户自己写的 C/C++ 模块,通过桥接的方式提供给 Node.js

中间层之上

  • Node.js API: 暴露给 Node.js 应用的 JS API
  • 我们使用 Node.js 开发应用,主要是使用 Node.js API,所以 Node.js 应用最终运行于 Node.js API 之上

经过架构分析,对于 Node.js 是基于 V8 的 JavaScript 运行时就不难理解了。

参考

NodeJS Architecture & Concurrency Model

NodeJS Dependencies