Różnice między AMQP i ZeroMQ

Ostatnio zaczął przyglądać się technologiom AMQP (RabbitMQ, ActiveMQ) i ZeroMQ, interesując się systemami rozproszonymi/obliczeniami. Szukałem w Googlach i nie mogłem znaleźć jednoznacznego porównania między tymi dwoma.

Najdalsze, jakie mam, to to, że te dwa nie są tak naprawdę porównywalne, ale chcę poznać różnice. Wydaje mi się, że ZeroMQ jest bardziej zdecentralizowany (no message broker playing middle-man handling messages/guarenteering delivery) i jako taki jest szybszy, ale nie ma być pełnoprawnym systemem, ale czymś bardziej programowym, czymś w rodzaju aktorów.

AMQP z drugiej strony wydaje się być pełniejszym systemem, z centralnym brokerem komunikatów zapewniającym niezawodną dostawę, ale wolniejszym niż ZeroMQ z tego powodu. Jednak centralny broker tworzy pojedynczy punkt awarii.

Może metaforą byłby klient / serwer vs. P2P?

Czy moje ustalenia są prawdziwe? Ponadto, jakie byłyby zalety, wady, czy przypadki użycia jednego nad drugim? Porównanie zastosowań *MQ vs. coś w rodzaju Akka Actors byłoby również miłe.

EDIT trochę się rozglądałem.. ZeroMQ wydaje się być nowym pretendentem do AMQP, wydaje się być znacznie szybszy, jedynym problemem będą adopcje / wdrożenia?

Author: adelbertc, 2012-09-28

6 answers

AMQP jest protokołem. ZeroMQ jest biblioteką wiadomości.

AMQP oferuje kontrolę przepływu i niezawodne dostarczanie. Definiuje standardowe, ale rozszerzalne metadane dla wiadomości (np. reply-to, time-to-live, plus nagłówki zdefiniowane przez aplikację). ZeroMQ zapewnia po prostu rozgraniczanie komunikatów (tzn. dzielenie strumienia bajtów na jednostki atomowe) i zakłada, że właściwości bazowego protokołu (np. TCP) są wystarczające lub że aplikacja zbuduje dodatkową funkcjonalność do sterowania przepływem, niezawodność czy coś na dodatek ZeroMQ.

Chociaż wcześniejsze wersje AMQP były zdefiniowane wzdłuż linii klient / serwer i dlatego wymagały brokera, to nie jest to już prawdą w przypadku AMQP 1.0, który jest symetrycznym protokołem peer-to-peer. Zasady dotyczące pośredników (takich jak brokerzy) są dodatkowo ułożone. Link od Alexis porównujący brokered i brokerless daje dobry opis korzyści, jakie mogą zaoferować tacy pośrednicy. AMQP określa zasady interoperacyjności pomiędzy różnymi komponentami-klientami, "inteligentnymi klientami", brokerami, mostami, routerami itp - taki, że system można skomponować, wybierając części, które są przydatne.

 11
Author: Gordon Sim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-01 06:36:51

Oto dość szczegółowe porównanie AMQP i 0MQ: http://www.zeromq.org/docs:welcome-from-amqp

Zauważ, że 0MQ jest również protokołem (ZMTP) z kilkoma implementacjami i społecznością.

 19
Author: Pieter Hintjens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-18 06:33:04

W ZeroMQ nie ma w ogóle kolejek komunikatów, stąd nazwa. Zapewnia jedynie sposób na wykorzystanie semantyki komunikatów nad zwykłymi gniazdami.

AMQP jest standardowym protokołem kolejkowania wiadomości, który ma być używany z brokerem wiadomości obsługującym wszystkie wysyłane i odbierane wiadomości. Ma wiele funkcji, które są dostępne, ponieważ kieruje cały ruch komunikacyjny za pośrednictwem brokera. Może to brzmieć powoli, ale w rzeczywistości jest dość szybki, gdy jest używany wewnątrz centrum danych, w którym host opóźnienia hosta są małe.

 5
Author: Michael Dillon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-13 23:13:51

Nie bardzo wiem, jak odpowiedzieć na twoje pytanie, czyli porównywanie wielu różnych rzeczy... ale zobacz to, co może pomóc Ci zacząć kopać w tych sprawach: http://www.rabbitmq.com/blog/2010/09/22/broker-vs-brokerless/

 2
Author: alexis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-30 21:31:01

Broker-less jest błędną nazwą w porównaniu do brokerów wiadomości, takich jak ActiveMQ, QPid, Kafka dla prostego okablowania.

Ponieważ dodajemy niezawodność, funkcję store and forward oraz wysokie wymagania dotyczące dostępności, prawdopodobnie potrzebujesz usługi brokera rozproszonego wraz z kolejką do udostępniania danych, aby obsługiwać luźne sprzężenie - odsprzęgnięte w czasie - ta topologia i architektura mogą być zaimplementowane za pomocą ZeroMQ, masz dostęp do wszystkich funkcji, które są dostępne dla Ciebie. aby rozważyć swoje przypadki użycia i zobaczyć, czy wymagane jest asynchroniczne przesyłanie wiadomości, a jeśli tak, gdzie zmieści się ZeroMQ, ma dobrą rolę w rozwiązaniu, które się wydaje i rozsądna znajomość TCP / IP i programowania gniazd pomoże Ci docenić wszystkie inne, takie jak ZeroMQ, AMQP, itp.
 1
Author: Sram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-15 15:16:13

AMQP (Advanced Message Queuing Protocol) jest standardowym protokołem binarnym, który umożliwia zgodnym aplikacjom klienckim komunikację z zgodnymi brokerami oprogramowania pośredniczącego. AMQP umożliwia międzyplatformowe usługi / systemy między różnymi przedsiębiorstwami lub wewnątrz przedsiębiorstwa, aby łatwo wymieniać wiadomości między sobą niezależnie od dostawcy brokera wiadomości i platformy. Istnieje wiele brokerów, którzy zaimplementowali protokół AMQP, takich jak RabbitMQ, Apache QPid, Apache Apollo itd.

ZeroMQ jest wydajną biblioteką komunikatów asynchronicznych przeznaczoną do wykorzystania w skalowalnych aplikacjach rozproszonych lub współbieżnych. Zapewnia kolejkę komunikatów, ale w przeciwieństwie do oprogramowania pośredniczącego zorientowanego na wiadomości, System ØMQ może działać bez dedykowanego brokera komunikatów.

 0
Author: java_geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-08 06:08:53