Сравнения производительности между ZeroMQ, RabbitMQ и в Apache Qpid

Мне нужна высокая производительность шины сообщений для моего приложения, так что я оцениваю работу ZeroMQ, в RabbitMQ и в Apache Qpid. Чтобы измерить производительность, я использую тестовую программу, которая публикует сказать 10000 сообщений, используя одну из реализаций очереди сообщений и другой процесс на этой же машине, чтобы потреблять эти 10000 сообщений. Тогда я записываю разница во времени между первым опубликовал сообщение и последнее сообщение.

Ниже перечислены настройки, которые я использовал для сравнения.

  1. В RabbitMQ: я использовал на "разветвитель" в обмен тип и очереди с конфигурацией по умолчанию. Я использовал клиентскую библиотеку в RabbitMQ с.
  2. ZeroMQ: мой издатель publises для протокола TCP://localhost в:порт 1сZMQ_PUSHгнездо, Мой Брокер по протоколу TCP://localhost в:порт 1 и отправляет сообщение на TCP://localhost в:порт2 и мой потребительскими прослушиваетпротокол TCP://localhost в:порт2черезZMQ_PULL` гнездо. Я через брокера вместо того, чтобы равный-равному связи в ZeroMQ для того чтобы сделать сравнение производительности ярмарка на другие сообщения в очереди выполнения, которые используются брокерами.
  3. Qpid с брокером сообщение++: я и "разветвитель" в обмен тип и очереди с конфигурацией по умолчанию. Я использовал клиент Qpid библиотеки C++.

Ниже приведен результат выполнения:

  1. В RabbitMQ: она занимает около 1 секунды, чтобы получить 10 000 сообщений.
  2. ZeroMQ: она занимает около 15 Милли секунд, чтобы получить 10 000 сообщений.
  3. Qpid: она занимает около 4 секунд, чтобы получить 10 000 сообщений.

Вопросы:

  1. Есть кто-нибудь запустить подобные сравнения производительности между очередями сообщений? Затем я сравниваю мои результаты с твоими.
  2. Есть ли способ я могу настроить в RabbitMQ или Qpid, чтобы сделать его лучше производительность?

Примечание:

Тесты были сделаны на виртуальной машине с двумя выделенный процессор. Результат может отличаться в зависимости от оборудования, однако я в основном заинтересованы в относительных характеристиках продукции соток.

Комментарии к вопросу (7)

В RabbitMQ является, вероятно, делать упорство на эти сообщения. Я думаю, вам нужно установить приоритет сообщения или другой вариант в сообщения, чтобы не делать настойчивости. Производительность повысится в 10 раз тогда. Вы должны ожидать, по крайней мере 100к сообщений в секунду через протокол AMQP брокера. В OpenAMQ мы получили производительность до 300к сообщений в секунду.

Протокол AMQP был предназначен для скорости (например, он не распаковывает сообщений для их маршрутизации) но ZeroMQ просто лучше разработаны в ключевых вопросах. Е. Г. он удаляет хоп, соединительных узлов без посредника; он делает лучше асинхронного ввода/вывода, чем любой из стеков протокола AMQP клиент; это делает более агрессивным дозирования сообщение. Возможно, 60% времени провел дома ZeroMQ зашел в настройки производительности. Это была очень тяжелая работа. Это's не быстрее случайно.

Одна вещь, я'd, как это сделать, но я слишком занят, чтобы воссоздать протокола AMQP-как брокер на ZeroMQ. Здесь есть первый слой: http://rfc.zeromq.org/spec:15. Весь стек будет несколько работать, как RestMS, с транспортом и семантики разделяются на два слоя. Это обеспечивают те же функциональные возможности, как протокол AMQP/0.9.1 (и семантически интероперабельных), но значительно быстрее.

Комментарии (2)

Мда, конечно ZeroMQ будет быстрее, он предназначен, чтобы быть и не много брокер функциональность, что и другие два обеспечивают. На сайте ZeroMQ есть замечательное сравнение брокер против обмена сообщениями brokerless и недостатки & преимущества обоих.

Блог В RabbitMQ:

RabbitMQ и 0MQ сосредоточены на различных аспектах обмена сообщениями. 0MQ ставит гораздо больше внимания на то, как сообщения передаются по проводам. В RabbitMQ, с другой стороны, фокусируется на том, как сообщения сохраняются, фильтруется и контролируется.

(Я тоже, как выше в RabbitMQ пост выше, а также говорит об использовании ZeroMQ С в RabbitMQ)

Так, что я'м пытаюсь сказать, что вы должны решить, на Техника, который лучше всего соответствует вашим требованиям. Если единственным требованием является скорость, ZeroMQ. Но если вам нужны другие аспекты, такие как сохранение сообщений, фильтрация, мониторинг, отказоустойчивость, и т. д. Ну, то, что's, когда вы должны начать рассматривать в RabbitMQ & Qpid.

Комментарии (2)

Я через брокера, а не равный-равному связи в ZeroMQ, чтобы сделать сравнение производительности ярмарка для реализации очереди сообщений, использует посредников.

Не знаю, почему вы хотите сделать это, если единственное, что вы заботитесь о производительности, нет необходимости, чтобы сделать равные условия. Если вы Don'т волнует сохранение, фильтрация, и т. д. тогда зачем платить такую цену?

Я'м еще и очень хитрый запуск тестов на ВМ'ы -- есть много дополнительных слоев, которые могут повлиять на результаты в целях, которые не очевидны. (Если вы're планирует запустить реальной системы на виртуальную машину'ы, конечно, в этом случае это очень действенный метод).

Комментарии (0)

Я'вэ проверены на C++/qpid

Я послал 50000 сообщений в секунду между двух разных машинах в течение длительного времени без очереди.

Я не'т использовать разветвителя, просто обмен (не постоянные сообщения)

Вы используете постоянные сообщения? Ты парсинга сообщений?

Я полагаю, нет, поскольку 0MQ не'т иметь структуры сообщения.

Если брокер в основном простаивает, вы, наверное, не'т настроили выборки на отправителя и рецепторов. Это очень важно, чтобы отправить много сообщений.

Комментарии (2)

Мы сравнили в RabbitMQ с нашим SocketPro (http://www.udaparts.com/) постоянные очереди сообщений в http://www.udaparts.com/document/articles/fastsocketpro.htm сайт со всеми исходниками. Вот такие результаты мы получили в RabbitMQ:

Же машина помещение и извлечения:

"Привет Мир" и -- помещение: 30000 сообщений в секунду; из них: 7000 сообщений в секунду.

текст с 1024 байт -- помещение: 11000 сообщений в секунду; из них: 7000 сообщений в секунду.

текст с 10 * 1024 байт -- помещение: 4000 сообщений в секунду; из них: 4000 сообщений в секунду.

Кросс-машина помещение и извлечения сети с пропускной способностью 100 Мбит / с:

"Привет Мир" и -- помещение: 28000 сообщений в секунду; из них: 1900 сообщений в секунду.

текст с 1024 байт -- помещение: 8000 сообщений в секунду; извлечения: 1000 сообщений в секунду.

текст с 10 * 1024 байт -- помещение: 800 сообщений в секунду; из них: 700 сообщений в секунду.

Комментарии (0)

Попробуйте настроить выборки на отправителя и рецепторов со значение 100. Предвыборка просто отправитель не хватает

Комментарии (1)

Мы'ве разработан открытым исходным кодом автобусного сообщения, построенные на вершине ZeroMQ - мы изначально сделали это, чтобы заменить Qpid. Это'ы brokerless так что's не совсем честное сравнение, но оно предоставляет такие же функции, как при посредничестве решений.

Наш показатель производительности 140к сбщ в секунду между двумя машинами, но вы можете посмотреть более подробно здесь: https://github.com/Abc-Arbitrage/Zebus/wiki/Performance

Комментарии (0)