Skip to content

Node.js 知识体系

🎯 设计理念: 从运行时原理到生产实践,构建完整的 Node.js 后端知识体系。每篇都有真实案例和可运行代码。

┌────────────────────────────────────────────────────────────────────────┐
│                      Node.js 知识体系                                   │
├────────────────────────────────────────────────────────────────────────┤
│                                                                        │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐              │
│   │  核心篇     │    │  运行时篇   │    │  框架篇     │              │
│   │ (运行机制)  │───▶│ (V8/进程)   │───▶│ (Web开发)   │              │
│   └─────────────┘    └─────────────┘    └─────────────┘              │
│         │                  │                  │                       │
│         ▼                  ▼                  ▼                       │
│   Event Loop          内存/GC            中间件机制                    │
│   Stream/Buffer       多进程/Worker      数据库操作                    │
│   模块机制                                                            │
│                                                                        │
│   ┌─────────────┐    ┌─────────────┐                                  │
│   │  工程篇     │    │  进阶篇     │                                  │
│   │ (生产实践)  │───▶│ (深度扩展)  │                                  │
│   └─────────────┘    └─────────────┘                                  │
│         │                  │                                          │
│         ▼                  ▼                                          │
│   性能调优              Native Addon                                   │
│   稳定性/高可用        FFI/WASM                                        │
│   安全/分布式锁                                                        │
│                                                                        │
└────────────────────────────────────────────────────────────────────────┘

📚 目录结构

一、核心篇:运行机制

文件主题核心内容真实案例
01-core-event-loop.md 🔥Event Loop 原理六个阶段、微任务、定时器setTimeout vs setImmediate
02-core-stream-buffer.md 🔥Stream 与 Buffer背压机制、Slab 分配流式文件拷贝
03-core-module.md模块机制CJS vs ESM、循环依赖模块解析算法

二、运行时篇:V8 与进程

文件主题核心内容真实案例
04-runtime-memory-gc.md ⭐⭐内存管理与 V8 GCOOM 排查、Scavenge/Mark-Sweep堆快照分析
05-runtime-cluster-worker.md多进程与 WorkerCluster 负载均衡、SharedArrayBufferWorker 线程池

三、框架篇:Web 开发

文件主题核心内容真实案例
06-framework-middleware.md中间件机制Koa 洋葱模型、compose 实现请求耗时统计
07-framework-database.md数据库操作连接池、ORM 选型、事务Prisma/TypeORM 实战
14-practice-koa.md 🆕Koa 框架洋葱模型、路由、中间件RESTful API 开发
15-practice-express.md 🆕Express 框架路由、中间件、错误处理企业级应用架构
16-practice-redis.md 🆕Redis 缓存数据类型、分布式锁、管道缓存服务封装
17-practice-mongodb.md 🆕MongoDB数据模型、聚合查询、索引Mongoose 实战
18-practice-rabbitmq.md 🆕RabbitMQAMQP、消息模式、死信队列消息队列实践
19-practice-kafka.md 🆕Kafka分区、副本、流处理大数据消息队列

四、工程篇:生产实践

文件主题核心内容真实案例
08-engineering-performance.md性能分析与调优火焰图、"平顶"现象、libuv 线程池CPU 密集型排查
09-engineering-stability.md ⭐⭐稳定性与高可用优雅退出、健康检查、限流熔断K8s 优雅重启
10-engineering-security.md安全防护原型链污染原理与防御RCE 漏洞分析
11-engineering-distributed.md ⭐⭐分布式锁Redis 原子锁、Lua 脚本、Redlock库存防超卖

五、进阶篇:深度扩展

文件主题核心内容真实案例
12-advanced-native-addon.mdNative AddonN-API vs WebAssembly vs FFISharp 图片处理

🗺️ 学习路线图

                                学习路径建议

         ┌───────────────────────────┼───────────────────────────┐
         │                           │                           │
         ▼                           ▼                           ▼
   ┌───────────┐             ┌───────────┐             ┌───────────┐
   │  初级后端  │             │  中级后端  │             │  高级后端  │
   │ 0-1 年经验 │             │ 1-3 年经验 │             │ 3+ 年经验  │
   └─────┬─────┘             └─────┬─────┘             └─────┬─────┘
         │                         │                         │
         ▼                         ▼                         ▼
   01 → 02 → 03              04 → 05 → 06              08 → 09 → 11
   Event Loop                内存管理                   性能调优
   Stream 原理               多进程架构                 稳定性设计
   模块机制                  中间件机制                 分布式锁
         │                         │                         │
         ▼                         ▼                         ▼
   06 → 07                   07 → 08 → 09              10 → 12
   中间件基础                 数据库操作                 安全防护
   数据库入门                 性能优化                   Native Addon
                             稳定性方案

💡 核心亮点

1. V8 内存分代回收 (04-runtime-memory-gc.md)

┌─────────────────────────────────────────────────────┐
│                    V8 Heap                          │
├─────────────────────┬───────────────────────────────┤
│     新生代           │            老生代             │
│   (New Space)       │        (Old Space)            │
│                     │                               │
│  ┌───────┬───────┐  │                               │
│  │ From  │  To   │  │                               │
│  │ Space │ Space │  │                               │
│  └───────┴───────┘  │                               │
│                     │                               │
│  对象存活率: 低      │  对象存活率: 高                │
│  算法: Scavenge     │  算法: Mark-Sweep/Compact      │
└─────────────────────┴───────────────────────────────┘

2. Koa 洋葱模型 (06-framework-middleware.md)

        ┌─────────────────────────────────┐
        │           Middleware A          │
        │   ┌─────────────────────────┐   │
        │   │       Middleware B      │   │
        │   │   ┌─────────────────┐   │   │
Request │   │   │   Middleware C  │   │   │ Response
───────▶│   │   │                 │   │   │────────▶
        │   │   │                 │   │   │
        │   │   └─────────────────┘   │   │
        │   └─────────────────────────┘   │
        └─────────────────────────────────┘

3. 熔断器状态机 (09-engineering-stability.md)

┌────────────┐     失败次数超阈值     ┌────────────┐
│   CLOSED   │ ─────────────────────▶ │    OPEN    │
│   (正常)   │                        │   (熔断)   │
└────────────┘                        └─────┬──────┘
      ▲                                     │
      │     连续成功 ≥ 3 次                  │ 超时后
      │                                     ▼
      │                              ┌────────────┐
      └───────────────────────────── │ HALF_OPEN  │
                                     │  (半开)    │
                                     └────────────┘

4. Redlock 分布式锁 (11-engineering-distributed.md)

┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐
│ Redis 1 │  │ Redis 2 │  │ Redis 3 │  │ Redis 4 │  │ Redis 5 │
│   ✓     │  │   ✓     │  │   ✓     │  │   ✗     │  │   ✗     │
└─────────┘  └─────────┘  └─────────┘  └─────────┘  └─────────┘
获取成功: 3 个  >  5/2 + 1 = 3 个  ✓ 获取锁成功

📁 代码示例

examples/
├── stream-copy.js        # 流式文件拷贝
├── middleware.js         # Koa 洋葱模型实现
└── worker-demo.js        # Worker 线程池 Demo ⭐

🔥 面试高频专题

Event Loop 与异步

  • [ ] Node.js Event Loop 六个阶段分别是什么?
  • [ ] setTimeout vs setImmediate 执行顺序?
  • [ ] process.nextTick vs Promise.then 优先级?

内存与性能

  • [ ] 如何排查 Node.js 内存泄漏?
  • [ ] V8 新生代和老生代的 GC 算法区别?
  • [ ] 火焰图"平顶"现象说明什么问题?

进程与并发

  • [ ] Cluster 模块如何实现多进程共享端口?
  • [ ] Worker Threads 和 Cluster 的区别?
  • [ ] 如何避免阻塞 Event Loop?

生产实践

  • [ ] Node.js 如何实现优雅退出?Keep-Alive 连接问题怎么处理?
  • [ ] 限流和熔断的区别?分别在什么场景使用?
  • [ ] 分布式锁解锁时为什么要用 Lua 脚本?

安全

  • [ ] 什么是原型链污染?如何防御?
  • [ ] 如何防止 SQL 注入?

📖 推荐阅读顺序

日常开发必读 (按重要性排序):

  1. 🔥 01-core-event-loop.md - Event Loop 原理
  2. 🔥 09-engineering-stability.md - 稳定性与高可用
  3. 🔥 07-framework-database.md - 数据库操作
  4. 🔥 06-framework-middleware.md - 中间件机制

性能优化:

  1. 04-runtime-memory-gc.md - 内存管理
  2. 08-engineering-performance.md - 性能调优
  3. 05-runtime-cluster-worker.md - 多进程与 Worker

面试深度准备:

  1. 11-engineering-distributed.md - 分布式锁
  2. 10-engineering-security.md - 安全防护
  3. 12-advanced-native-addon.md - Native Addon

前端面试知识库