认识
2024年04月09日
一、认识
cluster
模块是node.js
中用于实现和管理多进程的模块。常规的node.js
应用程序是单线程单进程的,这也意味着它很难充分利用服务器多核CPU
的性能,而cluster
模块就是为了解决这个 问题的,它使得node.js
程序可以以多个实例并存的方式运行在不同的进程中,以求更大地榨取服务器的性能。node.js
在官方示例代码中使用worker
实例来表示主进程fork
出的子进程,使得前端开发者在学习过程中非常容易和浏览器环境中的worker
实现的多线程混淆。为了容易区分,我们和node
官方文档使用一致的名称,用集群中的master
和worker
来区分主进程和工作进程,用worker_threads
来描述工作线程。
node.js
的主从模型中,master
主进程相当于一个包工头,主管监听端口,而slave
进程被用于实际的任务执行,当任务请求到达后,它会根据某种方式将连接循环分发给worker进程来处理。理论上,如果根据当前各个worker进程的负载状况或者相关信息来挑选工作进程,效率应该比直接循环发放要更高,但node.js文档中声明这种方式由于受到操作系统调度机制的影响,会使得分发变得不稳定,所以会将"循环法"作为默认的分发策略。