NodeJS 在Nest.js应用中使用工作线程的正确方法

3lxsmp7m  于 2023-05-17  发布在  Node.js
关注(0)|答案(3)|浏览(232)

我正在创建一个Nest.js应用程序,并希望照顾应用程序的可扩展性。我发现基本上有两种扩展方式:集群或工作线程。我已经问过关于node.js应用程序的可扩展性的问题了Docker vs Cluster with Node.js。发现最好用docker Package 应用程序,并从中创建克隆,而不是集群。所以,我已经用Nest.js应用程序做到了这一点,但问题是:
1.如何在Nest.js中使用工作线程来处理CPU密集型任务?
1.我们应该只导入工作线程并使用它,还是Nest.js中有特殊的语法允许我们使用工作线程?

0pizxfdo

0pizxfdo1#

队列

队列是一种功能强大的设计模式,可帮助您处理常见的应用程序扩展和性能挑战。
分解可能会阻塞Node.js事件循环的单体任务。例如,如果用户请求需要执行音频转码等CPU密集型工作,您可以将此任务委托给其他进程,从而释放面向用户的进程以保持响应。
Go to official document...

pu82cl6c

pu82cl6c2#

NestJS是一个NodeJS框架,依赖注入是它的主要吸引力。基于类的架构通常是最好的方法。现在,您完全没有理由不导入模块(类似于在Node/Typescript中的操作)并使用库。不需要特殊的语法,除非您决定创建一个Dynamic Module,这可能不是必需的。

mum43rcc

mum43rcc3#

如果你想处理CPU密集型任务,我已经写了一个blog post,因为我有同样的问题。
基本上,在与工作线程关联的js文件中,您可以使用Nest standalone application,它是IoC容器的 Package 器。

//  workerThread.js
async function run() {
const app = await NestFactory.createApplicationContext(AppModule);
// application logic...
}
run();

相关问题