Express 面试题
目录

如何使用集群 (Cluster) 提高 Express 应用的性能?

· 约 3 分钟读完 · 第 86 / 120 章

推荐答案

本题详细解读

1. 什么是集群 (Cluster)?

集群是 Node.js 提供的一个模块,允许你创建多个子进程(Worker)来共享同一个服务器端口。每个子进程都是一个独立的实例,能够处理请求。通过使用集群,你可以充分利用多核 CPU 的性能,从而提高 Express 应用的并发处理能力。

2. 为什么使用集群?

  • 性能提升:Node.js 是单线程的,默认情况下只能利用一个 CPU 核心。通过集群,你可以利用多个 CPU 核心,从而提高应用的并发处理能力。
  • 高可用性:如果一个 Worker 进程崩溃,主进程可以立即创建一个新的 Worker 进程来替代它,确保应用的高可用性。

3. 如何使用集群?

  • 主进程 (Master Process):主进程负责创建和管理 Worker 进程。它通过 cluster.fork() 方法来创建 Worker 进程,并监听 Worker 进程的退出事件,以便在 Worker 进程崩溃时重新创建。
  • Worker 进程 (Worker Process):每个 Worker 进程都是一个独立的 Express 应用实例,能够处理请求。Worker 进程通过 cluster.isWorker 来判断自己是否为 Worker 进程。

4. 代码解析

  • 主进程:cluster.isMaster 判断当前进程是否为主进程。如果是主进程,则根据 CPU 核心数创建相应数量的 Worker 进程。
  • Worker 进程:cluster.isWorker 判断当前进程是否为 Worker 进程。如果是 Worker 进程,则启动 Express 应用并监听端口。
  • 进程管理:主进程通过 cluster.on('exit', ...) 监听 Worker 进程的退出事件,并在 Worker 进程崩溃时重新创建。

5. 注意事项

  • 共享状态:由于每个 Worker 进程是独立的,它们之间不共享内存。如果你需要共享状态,可以考虑使用 Redis 或其他外部存储。
  • 负载均衡:Node.js 的集群模块会自动进行负载均衡,将请求分配给不同的 Worker 进程。

通过使用集群,你可以显著提高 Express 应用的性能和可靠性,尤其是在高并发场景下。