#node.js
#node.js
Вопрос:
Внутри моего сервера nodejs мне нужно выполнить вычисления с интенсивным использованием ЦП для большого набора данных, поступающего из базы данных SQL Server. Я читал о рабочих потоках как о способе параллельной обработки моих данных, поскольку мне нужно как можно быстрее завершить все свои вычисления.
У меня есть около 50 различных математических операций, которые необходимо выполнить с одним и тем же набором данных. Я никоим образом не изменяю набор данных во время выполнения операций, и рабочие не зависят от результатов других рабочих для их вычисления.
Каков наилучший подход к совместному использованию этой огромной таблицы SQL между всеми моими рабочими? Я думал о том, чтобы запросить данные в основном потоке, а затем сохранить их где-нибудь, где они могли бы быть доступны каждому рабочему потоку, но не мог понять, как это сделать.
Ответ №1:
В NodeJS нет концепции потоков, поскольку он однопоточный, вы можете добиться того же, используя C и N-API
Подход, отличный от C , заключается в создании нескольких процессов для этого.
SQL -> поток в основной поток -> запуск нескольких процессов из основного потока -> передача данных дочерним процессам через IPC -> при получении данных каждый процесс может начать обработку
Вы также можете положиться на Pub-sub для того же.
SQL -> основной процесс -> опубликовать событие с набором данных -> иметь несколько подписчиков для выполнения назначенных операций.
RabbitMQ — один из вариантов, доступно множество бесплатных и платных брокеров сообщений.
Однако существует максимальное ограничение на данные сообщений, которые вы можете публиковать, и они различаются.
надеюсь, это вам как-то помогло 🙂 приветствия