首页 > 解决方案 > 在 Nodejs 工作线程之间共享大型数据集

问题描述

在我的 nodejs 服务器中,我需要对来自 SQL Server 数据库的大型数据集执行 CPU 密集型计算。我一直在阅读有关 Worker Threads 作为并行处理数据的一种方式,因为我需要尽快完成所有计算。

我需要在同一个数据集上执行大约 50 种不同的数学运算。在进行操作时,我绝不会修改数据集,并且工作人员不依赖其他工作人员的结果来计算他们的结果。

在我的所有员工之间共享这个巨大的 SQL 表的最佳方法是什么?我正在考虑在主线程上查询数据,然后将其存储在每个工作线程都可以访问的地方,但不知道该怎么做。

标签: node.js

解决方案


NodeJs 没有线程的概念,因为它是单线程的,您可以使用 C++ 和N-API实现相同的功能

非 C++ 方法是生成多个进程来执行此操作。

SQL ->流到主线程 ->从主线程生成多个进程->通过 IPC 将数据传递给子进程-> 在接收数据时每个进程都可以开始处理

您也可以依赖Pub-sub来实现同样的目的。

SQL -> 主流程 -> 使用数据集发布事件 -> 有多个订阅者执行指定操作。

RabbitMq是一种选择,有许多免费和付费的消息代理可用。

但是,您可以发布的消息数据有一个最大限制,并且这些限制会有所不同。

希望这对您有所帮助:) 干杯


推荐阅读