Node.js和线程
我正在开发一个完全无阻塞的node.js应用程序。
然而,有一些CPU密集型function:
- CryptoJS.AES解密/encryption
- uuid创作
- 从数据创build内容
现在我发现一个模块使用线程从CPU密集型任务中卸载事件循环: node-webworker-threads
我现在应该创build:
- 在应用程序引导:每个函数一个线程,所以AES.decrypt是一个线程,AES.encrypt等。
- 在应用程序启动:每个function的线程池? (多less个线程?每个CPU核心1个?)
- 执行时:每个函数进入一个新的线程,完成后摧毁它?
线程是我还没有完全理解的东西..
这真的取决于你的应用程序。 如果使用固定大小的线程池,则如果请求的数量>可用线程的数量,则必须实现队列,这可能会导致一些拥塞。
最好的方式(在我看来,当然是)为每个请求产生一个新线程,处理AES,UUID和数据。 也就是说,每个请求执行所有计算的一个线程。 当一切都完成后,从线程返回结果并杀死它。
这当然可以在高负载的服务器上产生许multithreading; 但会保持你的事件循环清晰。
编辑: 这个线程可能会让你感兴趣。