Многосерверная обработка

У меня есть следующая цель для завершения.
Предположим, у меня есть следующий набор

1,2,3,4,5,6

А потом 3 условия

the first number must be even
the second number must be odd
the sum of first 3 numbers must be 12

Чтобы найти правильный набор, моя цель — создать случайные наборы и проверить, соответствуют ли они условиям.

1,3,2,5,4,6 - 0 conditions
2,4,3,5,6,1 - 1 condition
2,3,4,5,6,1 - 2 conditions
4,5,3,2,6,1 - 3 conditions. All conditions met, this is our set

Это очень простой пример, будет гораздо больше данных и намного больше условий. Почему я использую этот способ, чтобы найти набор? Поскольку при наличии такого количества правил невозможно найти правильный набор, а иногда невозможно найти набор, удовлетворяющий всем условиям, поэтому у меня будет проверка, которая позволит, например, выполнить набор из более чем 80% условий.

Поэтому я хочу обработать это на нескольких серверах, пока не найду действительные наборы. Вероятно, я буду использовать инстансы Amazon s3.

Я изучал RabbitMQ и Celery, но, насколько я понял, они больше похожи на настройку очереди, а не на параллельную обработку. Кроме того, мне, вероятно, нужно написать это на PHP и node.js

Я также думал иметь главный сервер и подчиненные серверы. Подчиненные серверы начнут генерировать и проверять наборы и отправлять результат мастеру, используя программу rabbit me. Как только набор найден, мастер выключит подчиненные серверы.

Не уверен, что это правильный подход (как в профессиональном плане, так и в плане оптимизации)

Какое программное обеспечение я должен использовать и как это можно реализовать?

Спасибо!

0

Решение

Я также думал иметь главный сервер и подчиненные серверы. Подчиненные серверы начнут генерировать и проверять наборы и отправлять результат мастеру, используя программу rabbit me. Как только набор найден, мастер выключит подчиненные серверы.

Я думаю, что ваш подход сработает. RabbitMQ — это сообщения, передача сообщений — это инструмент для организации параллельной обработки.

Ваш Генератор задач (мастер) отправляет задачи (сообщения RabbitMQ) в рабочая очередь. Ваши процессоры (ведомые) подписаны на очередь. Они могут получать сообщения о задачах из очереди и начинать генерировать наборы. После генерации они отправляют результат обратно в главный узел. Он может выдавать последующие задачи в зависимости от того, какие результаты он получает, т.е. generate sets of higher value from now или же enough, stop work (те должны идти в разные command тема на которую рабы тоже подписаны).

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector