前端/移动开发面试题更新 2026-08-05

请阐述 Node.js 中多进程机制存在的必要性,并说明在项目中如何启动多进程。

前端/移动开发系统设计技术原理Node.js

考察说明

考查对 Node.js 单线程事件循环模型局限性的理解以及 cluster 模块的使用能力。

回答思路

  1. 【回答框架 1】Node.js 主线程是单线程事件循环,只能利用一个 CPU 核心,面对 CPU 密集型任务会阻塞事件循环,无法充分利用多核资源。多进程可以并行使用多核,提高吞吐量和可靠性,同时隔离进程上下文,避免单个异常导致整个服务崩溃。
  2. 【回答框架 2】开启多进程主要有三种方式:child_process.fork 用于创建子进程并建立 IPC 通道,适合任务分发;cluster 模块基于 fork,在主进程中启动多个 worker,利用 round-robin 或操作系统调度分发连接,适合 Web 服务横向扩展;worker_threads 用于线程级并行,适合 I/O 密集或轻量计算。
  3. 【回答框架 3】以 cluster 为例:主进程通过 cluster.isMaster 判断,若是主进程则循环 fork 出多个 worker,并监听 worker 的 exit 事件以自动重启;worker 进程执行实际服务逻辑,监听同一端口,由主进程统一分发请求。
  4. 【回答框架 4】多进程还提供了更好的容错性:worker 崩溃不会影响其他进程,主进程可以监控并重启,提升服务可用性。但需要注意进程间通信成本、内存占用增加,以及共享状态的同步问题,通常通过 Redis 或数据库解决。
  5. 【关键点 1】Node.js 单线程只能利用单核,多进程可充分利用多核 CPU。
  6. 【关键点 2】child_process.fork 适用于任务分发,cluster 适用于 HTTP 服务负载均衡。
  7. 【关键点 3】cluster 主进程负责 fork 和调度,worker 监听同一端口,exit 事件用于自动重启。
  8. 【易错点 1】不要混淆多进程与多线程:Node.js 主线程仍是单线程,多进程并非线程并行。
  9. 【易错点 2】cluster 默认调度方式在不同平台可能不同,高并发下可能带来性能偏差。
  10. 【易错点 3】进程间共享数据不能直接使用内存,需要借助外部存储。