Нам было бы интересно услышать любой опыт с преимуществами и недостатками ActiveMQ против RabbitMQ против ZeroMQ. Информация о любых других интересных очередях сообщений также приветствуется.
Нам было бы интересно услышать любой опыт с преимуществами и недостатками ActiveMQ против RabbitMQ против ZeroMQ. Информация о любых других интересных очередях сообщений также приветствуется.
Ответы:
Изменить: мой первоначальный ответ был сосредоточен на AMQP. Я решил переписать его, чтобы предложить более широкий взгляд на тему.
Эти 3 технологии обмена сообщениями имеют разные подходы к созданию распределенных систем:
RabbitMQ является одной из ведущих реализаций протокола AMQP (наряду с Apache Qpid). Следовательно, он реализует архитектуру посредника, что означает, что сообщения помещаются в очередь на центральном узле перед отправкой клиентам. Такой подход делает RabbitMQ очень простым в использовании и развертывании, поскольку расширенные сценарии, такие как маршрутизация, балансировка нагрузки или постоянные очереди сообщений, поддерживаются всего в нескольких строках кода. Однако это также делает его менее масштабируемым и «медленным», поскольку центральный узел добавляет задержку, а конверты сообщений довольно большие.
ZeroMq - это очень легкая система обмена сообщениями, специально разработанная для сценариев с высокой пропускной способностью и низкой задержкой, подобных той, которую можно найти в финансовом мире. Zmq поддерживает множество расширенных сценариев обмена сообщениями, но в отличие от RabbitMQ, вам придется реализовать большинство из них самостоятельно, комбинируя различные части платформы (например, сокеты и устройства). Zmq очень гибок, но вам придется изучить около 80 страниц руководства (которое я рекомендую прочитать всем, кто пишет распределенную систему, даже если вы не используете Zmq), прежде чем сможете делать что-то более сложное, чем отправка сообщений между 2 пэрами.
ActiveMQ находится в центре внимания. Как и Zmq, он может быть развернут как с брокером, так и с топологией P2P. Как и в RabbitMQ, проще реализовывать расширенные сценарии, но обычно за счет необработанной производительности. Это швейцарский армейский нож для обмена сообщениями :-).
Наконец, все 3 продукта:
Почему вы пропустите Воробей , Старлинг , пустельга , Amazon SQS , Beanstalkd , Кафку , IronMQ ?
Серверы очереди сообщений
Серверы очереди сообщений доступны на разных языках: Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling или Sparrow), Scala (Kestrel, Kafka) или Java (ActiveMQ). Краткий обзор можно найти здесь
Воробей
Скворец
Пустельга
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Кафка
ZMQ
EagleMQ
IronMQ
Я надеюсь, что это будет полезно для нас. источник
Больше информации, чем вы хотели бы знать:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
Просто уточняю, что добавил Пол в комментарии. Упоминалось выше страница умер после 2010 года, так что читать с щепоткой соли. Многие вещи были изменены за 3 года.
Это действительно зависит от вашего варианта использования.
Сравнение 0MQ с ActiveMQ или RabbitMQ не справедливо. ActiveMQ и RabbitMQ являются системами обмена сообщениями, которые требуют установки и администрирования. Они предлагают намного больше, чем ZeroMQ. У них есть реальные постоянные очереди, поддержка транзакций и т. Д.
ZeroMQ - это легкая реализация сокетов, ориентированная на сообщения. Это также подходит для внутрипроцессного асинхронного программирования. Можно запустить «Enterprise Messaging System» поверх ZeroMQ, но вам придется многое реализовать самостоятельно.
Так:
ActiveMQ, RabbitMQ, Websphere MQ и MSMQ - это «очереди сообщений предприятия»
ZeroMQ - ориентированная на сообщения библиотека IPC.
Там это сравнение между RabbitMQ и ActiveMQ здесь . Изначально ActiveMQ настроен на гарантированную доставку сообщений, что может показаться медленным по сравнению с менее надежными системами обмена сообщениями. Вы всегда можете изменить конфигурацию производительности, если хотите, и получить, по крайней мере, такую же хорошую производительность, как и любая другая система обмена сообщениями. По крайней мере, у вас есть такая возможность. На форумах много информации и часто задаваемых вопросов по ActiveMQ для настройки масштабирования, производительности и высокой доступности. Кроме того, ActiveMQ будет поддерживать AMQP 1.0, когда спецификация будет завершена, вместе с другими форматами проводов, такими как STOMP.
Еще один плюс для ActiveMQ - это проект Apache, поэтому в сообществе разработчиков есть разнообразие, и он не привязан к одной компании.
Я не использовал ActiveMQ или RabbitMQ, но использовал ZeroMQ. Большая разница между ZeroMQ, ActiveMQ и т. Д. Заключается в том, что 0MQ не имеет брокеров и не имеет встроенной надежности для доставки сообщений. Если вы ищете простой в использовании API обмена сообщениями, поддерживающий множество шаблонов обмена сообщениями, транспортов, платформ и языковых привязок, то 0MQ определенно стоит посмотреть. Если вы ищете полноценную платформу для обмена сообщениями, то 0MQ может не соответствовать вашим требованиям.
Смотрите www.zeromq.org/docs:cookbook для множества примеров того, как можно использовать 0MQ.
Я успешно использую 0MQ для передачи сообщений в приложении мониторинга потребления электроэнергии (см. Http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
Я использую zeroMQ. Я хотел простую систему передачи сообщений, и мне не нужно усложнение брокера. Я также не хочу огромной Java-ориентированной корпоративной системы.
Если вам нужна быстрая и простая система и вам нужно поддерживать несколько языков (я использую C и .net), то я бы порекомендовал посмотреть на 0MQ.
Я могу добавить только 2 цента об ActiveMQ, но так как это один из самых популярных:
Язык, на котором вы хотите писать, может быть важен. Хотя у ActiveMQ для большинства есть клиент, их реализация на C # далека от завершения по сравнению с библиотекой Java.
Это означает, что некоторые базовые функции являются нестабильными (протокол аварийного переключения, который ... ну ... в некоторых случаях происходит сбой, без поддержки повторной доставки), а другие просто отсутствуют. Поскольку .NET, кажется, не так уж важен для проекта, разработка идет довольно медленно, и, похоже, плана выпуска не существует. Магистраль часто ломается, поэтому, если вы подумаете об этом, вы можете рассмотреть возможность участия в проекте, если хотите, чтобы дела шли вперед.
Затем есть сам ActiveMQ, у которого есть много приятных функций, но есть и очень странные проблемы. Мы используем Fuse (Progress) версию activemq из соображений стабильности, но даже в этом случае есть пара странных «ошибок», о которых вы хотите помнить:
В общем, это довольно хороший продукт, если вы можете справиться с его проблемами:
А) не боятся активно вмешиваться при использовании .NET
Б) разрабатывать в java ;-)
Сравнение характеристик и производительности RabbitMQ ActiveMQ и QPID приведено по адресу
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/.
Лично я перепробовал все вышеперечисленное. На мой взгляд, RabbitMQ - лучшая производительность, но у него нет возможностей восстановления после сбоя и восстановления. ActiveMQ имеет большинство функций, но медленнее.
Обновление: HornetQ - это также вариант, который вы можете посмотреть, это JMS Complaint, лучший вариант, чем ActiveMQ, если вы ищете решение на основе JMS.
Я написал о своем первоначальном опыте в отношении AMQP, Qpid и ZeroMQ здесь: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
Мое субъективное мнение заключается в том, что AMQP - это хорошо, если вам действительно нужны постоянные средства обмена сообщениями, и не слишком обеспокоен тем, что брокер может стать узким местом. Кроме того, клиент C ++ в настоящее время отсутствует для AMQP (Qpid не получил мою поддержку; однако я не уверен в клиенте ActiveMQ), но, возможно, работа в процессе. ZeroMQ может быть иным способом.
В комментариях к этому сообщению в блоге обсуждается , что Твиттер пишет свою собственную очередь сообщений, что может быть интересно.
Стив провел интенсивное нагрузочное и стресс-тестирование ActiveMQ, RabbitMQ и т. Д. ActiveMQ на самом деле довольно медленный (намного медленнее, чем Kestrel), RabbitMQ постоянно дает сбой слишком многим производителям и слишком малому количеству потребителей.
Впрочем, поначалу у вас не будет загрузки в стиле Twitter :)
Немногие приложения имеют столько конфигураций настройки, сколько ActiveMQ. Некоторые особенности, которые выделяют ActiveMQ:
Настраиваемый размер предварительной выборки. Настраиваемая резьба. Настраиваемое аварийное переключение. Настраиваемое административное уведомление для производителей. ... подробности на:
Аби, все сводится к твоему варианту использования. Вместо того, чтобы полагаться на чужую учетную запись своего варианта использования, не стесняйтесь публиковать свой вариант использования в списке rabbitmq-обсудить. Задавая вопросы в твиттере, вы получите ответы. С наилучшими пожеланиями, Алексис
Что касается ZeroMQ или 0MQ, как вы, возможно, уже знаете, это то, что будет получать наибольшее количество сообщений в секунду (их было около 4 миллионов в секунду на их сервере ссылок в прошлый раз, когда я проверял), но, как вы, возможно, уже знаете, документация не существует. Вам будет трудно найти, как запустить сервер (ы), не говоря уже о том, как их использовать. Полагаю, что отчасти никто еще не внес вклад в 0MQ.
Радоваться, веселиться!
Если вы также заинтересованы в коммерческих реализациях, вам стоит взглянуть на Nirvana из my-channel .
Nirvana активно используется в индустрии финансовых услуг для крупномасштабных торговых площадок с низкой задержкой и платформ распределения цен.
Существует поддержка широкого спектра клиентских языков программирования для предприятий, веб-сайтов и мобильных доменов.
Возможности кластеризации чрезвычайно продвинуты и стоит посмотреть, если для вас важны прозрачная HA или балансировка нагрузки.
Nirvana можно загрузить бесплатно для целей разработки.