标准答案
- Worker 适合 CPU 计算和较轻量的线程级隔离,进程崩溃和本地资源隔离能力有限。
- Cluster 适合多进程利用多核和隔离堆,但进程间状态、连接和会话不能默认共享。
- child_process 适合调用外部程序、沙箱或独立生命周期任务,必须限制参数、权限和资源。
- 三者都需要任务超时、退出码、错误传播、重启退避和优雅关闭。
题目解析
Worker Threads 共享进程的部分资源,适合线程级 CPU 隔离;Cluster 和 child_process 通过独立进程提供更强的堆、崩溃和权限边界,但状态、连接和会话不能默认共享。
child_process 运行外部程序时要限制参数、环境、工作目录、权限、输出和执行时间。shell 模式会扩大命令解释风险,用户输入不能直接拼接进命令。
Cluster 只是进程模型,生产中还要考虑容器编排、健康检查、滚动发布和进程管理。三者都需要退出码、重启退避、任务恢复和优雅关闭。
常见误区
- 误区:把 cluster worker 当作共享内存线程。改正:通过消息、共享存储或外部服务同步状态,不能依赖进程内变量。
- 误区:shell=true 拼接用户输入执行命令。改正:使用参数数组、白名单命令、最小权限和严格环境隔离。
- 误区:子进程无界创建和无超时等待。改正:限制并发、输出、生命周期和杀进程路径。