Я ищу наилучший подход для решения следующих задач:Heroku, RabbitMQ и многие работники. Какая лучшая архитектура?
У меня есть несколько пограничных устройств, публикующих данные датчиков для брокера RabbitMq. Брокер будет испытывать общую нагрузку ~ 500 сообщений в секунду. Затем есть рабочий динамик python, который потребляет один датчик за один раз, применяет к нему фильтр (который может занимать до 5-15 мс) и публикует результат на другую тему.
Конечно, одного работника недостаточно, чтобы обслуживать все запросы, поэтому мне нужно правильное масштабирование. Я использую очередь, чтобы убедиться, что каждое считывание датчика потребляется только один раз!
Мои вопросы:
ли я масштабироваться горизонтально и просто начать столько динамометрические стенды, сколько необходимо для обработки всех запросов в очереди RabbitMQ? Кажется простым, но дорогим.
Или было бы лучше иметь меньше динозавров, но больше потоков, работающих на каждом дино, и, используя, например, сельдерей?
Или имеется балансировщик нагрузки, который потребляет 1 элемент из очереди и динамически динамически динамически?
Что-то совсем другое?
Значит, это не пустая трата, чтобы один Dyno просто выполнял краткосрочный процесс python? Также в настоящий момент RabbitMQ как брокер отвечает за управление очередью и равномерно распределяет каждое сообщение потребителю, так что потребитель не получит одно и то же сообщение. Таким образом, нет необходимости в балансировке нагрузки, заботясь об этом праве? – binaryguy
RabbitMQ заботится о балансировке нагрузки для вас. Имея несколько потребителей в одной очереди/прямом обмене, вы получаете балансировку нагрузки по умолчанию. Поскольку единственный Dyno просто выполняет краткосрочный процесс python, это рабочий, постоянно потребляющий новые сообщения для обработки, поэтому он всегда будет работать, если я не пойму ваш случай использования. – metame
Да, вы правы. Я думаю, что нет необходимости в сельдере. Меня просто беспокоило, что такой простой процесс python может быть пустой тратой Dynos. В конце концов, этот подход может быть проще поддерживать, но, соответственно, более дорогостоящим из-за потребностей большего количества Dynos, работающих параллельно. – binaryguy