Почему у rabbitmq такая низкая производительность?
У нас на проекте микросервисная архитектура. Используем RPC паттерн (tornado + pika). На каждый результат создаётся queue с айдишником в rabbitmq. И при большом колличестве очередей(чем больше очередей тем сильнее) производительность падает, при чём колличество воркеров не имеет значения. Где-то на 50RPS rabbitmq встаёт колом, хотя воркеры команды выполняют. Тестили то же самое с Redis, просто результат клали в него с id команды, вывозит около 400RPS. Это мы неправильно готовим rabbitmq, или это такая спицифика? Может есть какие-то более удачные решения для реализации rpc в микросервисной архитектуре?
В гугле по словам "rabbitmq" и "rpc" выдаётся ссылка на оф.документацию по Direct reply-to, Вы пробовали такой механизм? Создание/удаление очереди ради получения одного ответа это очень накладно. 50/400rpc это вообще не о чём, даже для RabbitMQ (конечно всё зависит от выделенных ресурсов, хранению на диске и т.д.).
Можно попробовать кластеризацию для RabbitMQ и поиграться с настройками.
Еще есть вариант заюзать Apache Kafka - более мощное и высокопроизводительное решение.