Нам буде цікаво почути будь-який досвід щодо плюсів і мінусів 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 товари:
Чому ви пропустили Воробея , Старлінга , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
Сервери черги повідомлень
Сервери черги повідомлень доступні різними мовами: Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling або Sparrow), Scala (Kestrel, Kafka) або Java (ActiveMQ). Короткий огляд можна знайти тут
Горобчик
Старлінг
Пустощі
КроликMQ
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
B) розвиватися в java ;-)
Проведено порівняння особливостей та продуктивності RabbitMQ ActiveMQ та QPID, наведених на веб-сайті
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
Особисто я спробував усі вищевказані три. На мене RabbitMQ - найкраща ефективність, але вона не має варіантів відмови та відновлення. ActiveMQ має більшість функцій, але повільніше.
Оновлення: HornetQ - це також варіант, який ви можете розглянути, це скарга на JMS, кращий варіант, ніж ActiveMQ, якщо ви шукаєте рішення, засноване на JMS.
Про свій початковий досвід щодо AMQP, Qpid та ZeroMQ я писав тут: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
Моя суб'єктивна думка полягає в тому, що AMQP добре, якщо вам справді потрібні постійні засоби обміну повідомленнями і не надто переймається тим, що брокер може бути вузьким місцем. Також клієнт C ++ наразі відсутній для AMQP (Qpid не завоював мою підтримку; проте не впевнений у клієнті ActiveMQ), але, можливо, працює. ZeroMQ може бути інакше.
У коментарях до цієї публікації щоденника є певна дискусія про те, як Twitter написав власну чергу повідомлень, що може бути цікавим.
Стів робив великі навантажувальні та стресові тести ActiveMQ, RabbitMQ тощо. ActiveMQ насправді досить повільний (набагато повільніше, ніж Kestrel).
Ви, мабуть, спочатку не матимете завантаження, як Twitter :)
Мало хто з додатків має стільки конфігурацій настройки, скільки ActiveMQ. Деякі функції, які виділяють ActiveMQ, такі:
Налаштування розміру попереднього вибору. Налаштування різьблення. Налаштування відмови. Налаштоване адміністративне повідомлення виробникам. ... подробиці за адресою:
Ебі, все зводиться до вашої справи використання. Замість того, щоб покладатися на чужий рахунок свого випадку використання, не соромтеся опублікувати свій випадок використання у списку обговорень rabbitmq. Запит на Twitter ще й отримає відповіді. Найкращі побажання, алексис
Про ZeroMQ aka 0MQ, як ви, можливо, вже знаєте, саме те, що отримає вам найбільше повідомлень за секунду (вони були приблизно 4 мільйони в секунду на їх сервері ref, коли я перевіряв останній раз), але, як ви, можливо, вже знаєте, документація не існує. Вам буде важко знайти, як запустити сервер (и), не кажучи вже про те, як ними користуватися. Я думаю, що це частково тому, що ще ніхто не сприяв 0MQ.
Веселіться!
Якщо ви також зацікавлені в комерційних реалізаціях, варто поглянути на Nirvana з моїх каналів .
Nirvana активно використовується в галузі фінансових послуг для широкомасштабних платформ для торгівлі з низькою затримкою та розподілу цін.
Існує підтримка широкого спектру клієнтських мов програмування на всіх підприємствах, в Інтернеті та мобільних доменах.
Можливості кластеризації надзвичайно вдосконалені і їх варто придивитись, якщо для вас важливі прозорі HA або балансування навантаження.
Nirvana безкоштовно завантажити для цілей розвитку.