RabbitMQ обеспечивает высокую скорость передачи временных сообщений

StackOverflow https://stackoverflow.com/questions/2124221

  •  22-09-2019
  •  | 
  •  

Вопрос

Система, которую мы создаем, получает данные через внешний канал.Наша задача состоит в том, чтобы распределить эти данные по нескольким сервисам, выполнить вычисления и переслать результаты в другое место - типичная ситуация между издателем и подписчиком.Что нам нужно, так это обмен сообщениями с очень низкой задержкой.Нам не нужно сохранять сообщения, подобные MSMQ.

Достаточно ли быстр RabbitMQ для мягкой доставки сообщений в реальном времени?Есть ли какие-то ориентиры?Хорошая ли идея использовать его вместо TIBCO Rendezvous?Существуют ли какие-либо другие альтернативы программному обмену сообщениями в режиме реального времени с открытым исходным кодом?

Спасибо.

Это было полезно?

Решение

(Я разработчик rabbitmq.)

При небольшой загрузке Rabbit обычно имеет задержки порядка 100-400 микросекунд, в зависимости от таких параметров, как ваша сетевая карта и скорость процессора.Как только загрузка становится немного тяжелее, начинает проявляться внутренняя буферизация и задержки немного увеличиваются.Вы можете смело ожидать задержек в 1 мс до тех пор, пока использование полосы пропускания (количество сообщений в секунду, байт в секунду) не начнет возрастать.Естественно, задержки также возрастут, как только будет введена настойчивость.

Что касается тестов, то одна из самых больших проблем здесь заключается в определении того, что важно для вашего приложения.Есть несколько тривиально простых примеров измерения задержки и пропускной способности от точки к точке и от паба к югу, включенных в клиент Java;спросите в списке rabbitmq-discussy, есть ли у вас проблемы с ними!Они не имеют большого значения для реальных приложений, но могут помочь развеять любые ваши опасения по поводу микропредметок задержки или пропускной способности.

Наконец, в наши дни доступно много-много хороших систем обмена сообщениями с открытым исходным кодом и связанных с ними систем.Только в мире AMQP, помимо RabbitMQ, существуют также Qpid и OpenAMQ.Существуют также хорошие JMS-серверы с открытым исходным кодом, если вы можете ограничиться Java (многие люди добиваются успеха с ActiveMQ).Также появляется множество легких систем для систем Ruby и Python;эти системы, как правило, концентрируются только на очередях и, как правило, не обладают гибкими возможностями маршрутизации, которые предлагает AMQP.

Другие советы

Вы должны быть в состоянии обрабатывать многие десятки тысяч сообщений в секунду на каждый процессор.Например, один из наших стандартных тестов отправляет 25 тысяч сообщений в секунду с Java-клиента на сервер, работающий на четырехъядерном COTS debian box, и обратно клиенту.Клиент и сервер работают в одном и том же окне, так что на сервере обрабатывается 50 тыс. сообщений в секунду плюс 50 тыс. сообщений, обрабатываемых в секунду на клиенте.Вы можете получить более высокие скорости, запустив сервер на выделенном сервере с большим количеством ядер.Тарифы, основанные на байтах в секунду, пожалуйста, уточняйте в списке рассылки rabbitmq-discussy.

алексис

Лучшее решение, которое я могу придумать о вашей системе, это ZeroMQ ( Нулевой код ).

В нем нет постоянства, которое, как вы сказали, вам не нужно, и он ОЧЕНЬ быстрый и простой в использовании.

Это не реализация AMQP (которая, похоже, вам тоже не нужна), но, как сказано на это руководство:

ØMQ (ZeroMQ, 0MQ, zmq) выглядит как встраиваемая сетевая библиотека, но действует как фреймворк параллелизма.Это дает вам сокеты, которые передают целые сообщения по различным каналам передачи, таким как внутрипроцессный, межпроцессный, TCP и многоадресная рассылка.Вы можете подключать сокеты N-к-N с помощью таких шаблонов, как fanout, pub-sub, распределение задач и запрос-ответ.Это достаточно быстро, чтобы стать основой для кластеризованных продуктов.Его модель асинхронного ввода-вывода предоставляет вам масштабируемые многоядерные приложения, построенные как задачи асинхронной обработки сообщений.Он имеет множество языковых API и работает в большинстве операционных систем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top