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

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

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

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

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

  1. RabbitMQ: для получения 10 000 сообщений требуется около 1 секунды.
  2. ZeroMQ: Для получения 10 000 сообщений требуется около 15 миллисекунд.
  3. Qpid: Для получения 10 000 сообщений требуется около 4 секунд.

Вопросы:

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

Примечание:

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

76
задан Steve Casey 30 July 2015 в 04:10
поделиться