У меня есть сервер, и пусть, скажем, 3 рабочих. Все они могут запускаться независимо (т. Е. Сервер может быть недоступен, когда рабочий уже запущен). Рабочие работают на выделенных серверах.
Я хотел бы реализовать следующий сценарий:
1) Рабочий отправляет сообщение о регистрации на сервер с типом задания, которое он может выполнить.
2) Сервер получил сообщение и добавил работника в список register_workers (затем используйте heartbeats или поймете, как работник подключен).
3) В какой-то момент сервер решает выполнить какое-то задание какого-либо типа, получил какого-то работника из зарегистрированный список и отправляет ему задание.
4) Рабочий отчитывается перед сервером о завершении задания.
Не могли бы вы посоветовать архитектуру обмена сообщениями для этого сценария? Какой брокер / фреймворк (Python) выбрать и кратко описать сокеты / очередь / обмен / темами / какую-либо архитектуру внутри него?
Я рассматриваю ZeroMQ / RabbitMQ / Kafka.