воркеров, они получают идентичные данные.
Далее по ходу работы, воркер при получении данных отправляет полученные данные в парент, а парент рассылает по другим воркерам указание, что нужно добавить эти новые данные. Также с удалением.
На скрине простой вариант, конечно будет больше действий и сложней логика. Но в целом, стоит использовать такой подход?
Я как то делал точно такую логику для одного пет проекта Но если это ты в реальный проект, то лучше что бы был отдельный сервис (БД) и воркеры смотрели туда
а не проще прикрутить redis а поверх редиса взять любую систему обмена events ?
Не совсем понял, зачем вам там кейс, когда у вас везде sendMessageToAllWorkers(message.command, message.data)
Каждый воркер получает объекты информации, анализирует их и на основе анализа совершает определенные действия над объектом. Но только, если другой воркер не начал работать на этим же объектом. Поэтому нужно, чтобы каждый воркер знал над каким объектом работают другие воркеры, а так же мог сам сообщать воркерам, что он взял за работу определенный объект. + у каждого воркера есть определенные значения, которые меняются по ходу выполнения программы и другим воркерам нужно знать значения каждого другого воркера (так как эти значения учитываются при анализе входящих объектов)
А если посмотреть на это таким образом У главного воркера есть очередь задач. Остальный воркеры, по мере освобождения берут задачу из очереди и работают над ней. Поскольку очередь in-memory, в одном главном потоке, то в моменте только один воркер достаёт из очереди конеретную задачу.
То есть разделить процесс получения информации и её обработки? Воркер получает информацию, передаёт в главный процесс, а оттуда она передаётся в другого воркера?
Обсуждают сегодня