Мне нравятся архитектурные проблемы, вот что я хотел бы сделать, если бы мне пришлось делать этот проект.
Workflow:
- Узел отправит запрос на сервер, включая фреймы и узел
ID
- На основе идентификатора узла и фреймов Сервер создаст задание в очереди, используя redis в памяти, чтобы отслеживать задания, отправленные узлами, а также сохранять каждый запрос в БД
- Сервер будет обрабатывать каждое задание, запуская работника на сервере, который будет извлекать и обрабатывать каждое задание из очередей переадресации.
- Обновить запись о задании. По завершении задание будет помечено как выполненное, и результат будет сохранен.
- Узел может позвонить на сервер, чтобы узнать состояние каждого задания, опубликованного узлом.
Вам необходимо создать интерфейс REST API на сервере, чтобы опубликовать задание с узла, сохранить этот запрос в БД и создать задание на основе этого запроса, а также отправить его в очередь повторного выполнения. Рабочий автоматически извлекает задания из очередей повторного выполнения и обновляет запись в БД на основе результатов обработки.
Вам необходимо следующее на стороне сервера :
- REST API
- Очередь Redis (RQ) Ссылка
- сервер БД
Используя эту архитектуру, вы можете легко вернуть облегченный результат немедленно клиенту и сохранить все задания в обработке. Архитектура RESTful - это широко используемая архитектура, но для трудоемких работ мы используем процессоры очередей, и клиент отправляет нам запрос на проверку статуса всех работ, отправленных на сервер. Если вам нужно, я могу нарисовать архитектуру, включая гораздо больше деталей.
Вкратце: если у вас есть клиент-серверная архитектура, используйте API REST для связи и отправки каждого запроса в хранилище очереди в памяти, если запрос, отправленный клиентом, занимает много времени и имеет многошаговые задания сделать. А с помощью этой архитектуры вы можете публиковать любое количество заданий, а также нескольких работников, балансировщиков нагрузки для производительности.