Node.js和线程

我正在开发一个完全无阻塞的node.js应用程序。

然而,有一些CPU密集型function:

  • CryptoJS.AES解密/encryption
  • uuid创作
  • 从数据创build内容

现在我发现一个模块使用线程从CPU密集型任务中卸载事件循环: node-webworker-threads

我现在应该创build:

  1. 在应用程序引导:每个函数一个线程,所以AES.decrypt是一个线程,AES.encrypt等。
  2. 在应用程序启动:每个function的线程池? (多less个线程?每个CPU核心1个?)
  3. 执行时:每个函数进入一个新的线程,完成后摧毁它?

线程是我还没有完全理解的东西..

这真的取决于你的应用程序。 如果使用固定大小的线程池,则如果请求的数量>可用线程的数量,则必须实现队列,这可能会导致一些拥塞。

最好的方式(在我看来,当然是)为每个请求产生一个新线程,处理AES,UUID和数据。 也就是说,每个请求执行所有计算的一个线程。 当一切都完成后,从线程返回结果并杀死它。

这当然可以在高负载的服务器上产生许multithreading; 但会保持你的事件循环清晰。

编辑: 这个线程可能会让你感兴趣。