Node.js 中处理 CPU 密集型任务的正确姿势:从阻塞事件循环到 Worker Threads 实战
在 Node.js 服务里跑图片压缩、PDF 解析或者加解密逻辑时,经常遇到一个尴尬现象:明明接口已经做了异步封装,但某个请求一进来,整个进程的其他请求全卡住,健康检查探针超时,日志也停止输出。根本原因是这些计算任务运行在主线程上,把事件循环堵死了。Node.js 的单线程模型擅长 I/O 密集场景,可一旦遇到大循环、复杂正则、同步加密函数,事件循环就没机会处理其他回调。很多人第一反应是用 setImmediate 或 process.nextTick 把任务拆开,但这只是把阻塞点延后,并没有真正释放主线程...