Node.js 中的 cluster 模块
Node.js 中的 cluster 模块是用来实现多进程并行处理请求的,它的原理是将主进程作为负载均衡器,将请求分发给子进程进行处理。cluster 模块通过 fork() 方法在主进程中创建多个子进程,这些子进程会共享父进程的端口,从而可以监听同一个端口的请求。当一个请求到来时,主进程会将其分发给子进程处理,实现了并行处理请求的效果。
在 cluster 模块中,主进程作为一个管理者,主要负责创建子进程、维护进程间的通信、监控子进程的状态等任务。而子进程则负责实际处理请求。
cluster 模块提供了四种负载均衡策略:轮询(round-robin)、最小连接数(least-connection)、IP哈希(ip-hash)和随机(random)。默认的负载均衡策略是轮询,即将请求依次分发给每个子进程。可以通过设置 cluster.schedulingPolicy 属性来指定负载均衡策略。
另外,cluster 模块还提供了一些事件,例如 fork、online、listening、disconnect、exit 等,可以用来监听进程的生命周期和状态变化,从而更好地管理和监控子进程。