NodeJS общается через дерево подпроцессов

Я разрабатываю приложение NodeJS, которое загружает, анализирует и использует базовые методы машинного обучения на общедоступных данных из нескольких различных источников. Это может быть дорогостоящим с точки зрения вычислений, и чтобы избежать переполнения основного цикла событий моего приложения, я хотел бы использовать дочерние процессы / микросервисы для изоляции каждой основной задачи в ее собственном процессе.

В идеале разделение процесса выглядело бы примерно так:

Main Process
|-Data Source A
|  |- Data Downloading Microservice
|  |- Data Parsing Microservice
|  |- Main Computation Microservice
|-Data Source B
|  |- Data Downloading Microservice
|  |- Data Parsing Microservice
|  |- Main Computation Microservice
...

Насколько я понимаю, передача данных и связь между каждым из этих процессов будут ограничены, и когда придет время для доступа к определенной части информации из одного из дочерних процессов Data Source, мне придется отправить сообщение от Main Process на процесс Data Source, а затем попросите процесс Data Source отправить сообщение одному из своих микросервисов, а затем полностью передать эти данные обратно.

Есть ли более простой способ сделать это? Например, возможность хранить таблицу идентификаторов процессов для каждого подпроцесса в таблице поиска и иметь возможность напрямую отправлять сообщения в этот процесс и из него, не просматривая тот, который изначально его породил?

Есть «много» разных способов сделать это, и слишком много для простого объяснения. Если вы действительно хотите более «бесплатного» взаимодействия между различными процессами, тогда вам, вероятно, нужно что-то вроде очереди сообщений для приема и отправки между разными клиентами. Попытка установить правила в самих процессах, вероятно, была бы слишком обременительной, поэтому я бы больше обратил внимание на своего рода «брокера», который действовал бы как «шина сообщений» в любом другом масштабе, кроме самого маленького. Поищите материал по этой теме.

Neil Lunn 27.04.2018 06:02

@NeilLunn Именно то, что я искал, просто не знал терминологии. Спасибо!

w0f 27.04.2018 06:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
18
0

Другие вопросы по теме