在Nodejs工作线程之间共享大型数据集

ajsxfq5m  于 11个月前  发布在  Node.js
关注(0)|答案(1)|浏览(161)

在我的nodejs服务器中,我需要对来自SQL Server数据库的大型数据集执行CPU密集型计算。我一直在阅读关于并行处理数据的工作线程,因为我需要尽可能快地完成所有计算。
我有大约50个不同的数学运算需要在同一个数据集上执行。在我做运算的时候,我绝不会修改数据集,工人们也不依赖其他工人的结果来计算他们的结果。
在我所有的工作线程之间共享这个巨大的SQL表的最佳方法是什么?我正在考虑在主线程上查询数据,然后将其存储在每个工作线程都可以访问的地方,但不知道如何做到这一点。

isr3a4wc

isr3a4wc1#

NodeJs没有线程的概念,因为它是单线程的,你可以使用CN-API来实现同样的功能
非C
的方法是产生多个进程来完成这一任务。
SQL -> stream to main thread -> spawn multiple processes from main thread -> pass the data to the child processes via IPC->在接收数据时每个进程可以开始处理
你也可以依赖Pub-sub来实现同样的功能。
SQL ->主进程->发布事件与数据集->有多个订阅者做指定的操作。
RabbitMq是一种选择,有许多免费和付费的消息代理可用。
但是,您可以发布的消息数据有最大限制,并且这些限制会有所不同。
希望这对你有帮助:)干杯

相关问题