Chętnie poznamy wszelkie zalety i wady ActiveMQ vs RabbitMQ vs ZeroMQ. Informacje o innych interesujących kolejkach wiadomości są również mile widziane.
Chętnie poznamy wszelkie zalety i wady ActiveMQ vs RabbitMQ vs ZeroMQ. Informacje o innych interesujących kolejkach wiadomości są również mile widziane.
Odpowiedzi:
Edycja: Moja pierwotna odpowiedź była silnie skoncentrowana na AMQP. Postanowiłem przepisać go, aby zaoferować szersze spojrzenie na ten temat.
Te 3 technologie przesyłania wiadomości mają różne podejście do budowy systemów rozproszonych:
RabbitMQ jest jedną z wiodących implementacji protokołu AMQP (wraz z Apache Qpid). Dlatego implementuje architekturę brokera, co oznacza, że wiadomości są kolejkowane w centralnym węźle przed wysłaniem do klientów. Takie podejście sprawia, że RabbitMQ jest bardzo łatwy w użyciu i wdrażaniu, ponieważ zaawansowane scenariusze, takie jak routing, równoważenie obciążenia lub trwałe kolejkowanie komunikatów są obsługiwane w zaledwie kilku wierszach kodu. Jednak sprawia też, że jest mniej skalowalny i „wolniejszy”, ponieważ centralny węzeł dodaje opóźnienie, a koperty wiadomości są dość duże.
ZeroMq to bardzo lekki system przesyłania wiadomości zaprojektowany specjalnie dla scenariuszy o wysokiej przepustowości / niskim opóźnieniu, takich jak ten, który można znaleźć w świecie finansów. Zmq obsługuje wiele zaawansowanych scenariuszy przesyłania wiadomości, ale w przeciwieństwie do RabbitMQ, większość z nich będziesz musiał zaimplementować, łącząc różne elementy frameworka (np. Gniazda i urządzenia). Zmq jest bardzo elastyczny, ale musisz zapoznać się z około 80 stronami przewodnika (które polecam dla każdego, kto pisze system rozproszony, nawet jeśli nie używasz Zmq), zanim będziesz w stanie zrobić coś bardziej skomplikowanego niż wysyłanie wiadomości od 2 rówieśników.
ActiveMQ znajduje się na środku ziemi. Podobnie jak Zmq, można go wdrożyć z topologiami brokera i P2P. Podobnie jak RabbitMQ, łatwiej jest wdrożyć zaawansowane scenariusze, ale zwykle kosztem surowej wydajności. To szwajcarski scyzoryk do przesyłania wiadomości :-).
Wreszcie wszystkie 3 produkty:
Dlaczego tęskniłeś za Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
Serwery kolejek wiadomości
Serwery kolejek wiadomości są dostępne w różnych językach: Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling lub Sparrow), Scala (Kestrel, Kafka) lub Java (ActiveMQ). Krótki przegląd można znaleźć tutaj
Wróbel
Szpak
Pustułka
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
Mam nadzieję, że to nam pomoże. źródło
Więcej informacji niż chciałbyś wiedzieć:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
Właśnie rozwijam to, co Paweł dodał w komentarzu. Wspomniana strona jest martwa po 2010 roku, więc przeczytaj ją szczyptą soli. Wiele rzeczy zostało zmienionych w ciągu 3 lat.
To zależy od twojego przypadku użycia.
Porównanie 0MQ z ActiveMQ lub RabbitMQ jest niesprawiedliwe. ActiveMQ i RabbitMQ to systemy przesyłania wiadomości wymagające instalacji i administracji. Oferują one znacznie więcej niż ZeroMQ. Mają prawdziwe trwałe kolejki, obsługę transakcji itp.
ZeroMQ to lekka implementacja gniazd zorientowana na komunikaty. Nadaje się również do programowania asynchronicznego w trakcie procesu. Możliwe jest uruchomienie „Enterprise Messaging System” na ZeroMQ, ale trzeba by dużo zaimplementować samodzielnie.
Więc:
ActiveMQ, RabbitMQ, Websphere MQ i MSMQ to „Kolejki wiadomości dla przedsiębiorstw”
ZeroMQ to biblioteka IPC zorientowana na komunikaty.
Nie ma porównania między RabbitMQ i ActiveMQ tutaj . Po wyjęciu z pudełka ActiveMQ jest skonfigurowany tak, aby gwarantować dostarczanie wiadomości - co może sprawiać wrażenie powolnego w porównaniu do mniej niezawodnych systemów przesyłania wiadomości. Zawsze możesz zmienić konfigurację wydajności, jeśli chcesz, i uzyskać co najmniej tak dobrą wydajność, jak każdy inny system przesyłania wiadomości. Przynajmniej masz tę opcję. Na forach i często zadawanych pytaniach na temat ActiveMQ znajduje się wiele informacji na temat konfiguracji skalowania, wydajności i wysokiej dostępności. Ponadto ActiveMQ będzie obsługiwał AMQP 1.0, gdy specyfikacja zostanie sfinalizowana, wraz z innymi formatami przewodowymi, takimi jak STOMP.
Kolejnym plusem dla ActiveMQ jest projekt Apache, więc społeczność programistów jest różnorodna - i nie jest powiązana z jedną firmą.
Nie korzystałem z ActiveMQ ani RabbitMQ, ale użyłem ZeroMQ. Duża różnica, jaką widzę między ZeroMQ i ActiveMQ itp., Polega na tym, że 0MQ jest bez brokera i nie ma wbudowanej niezawodności do dostarczania wiadomości. Jeśli szukasz łatwego w użyciu interfejsu API obsługi wiadomości obsługującego wiele wzorców przesyłania, transportów, platform i powiązań językowych, zdecydowanie warto sprawdzić 0MQ. Jeśli szukasz platformy komunikacyjnej z pełną funkcjonalnością, 0MQ może nie pasować do rachunku.
Widzieć www.zeromq.org/docs:cookbook na dużo przykładów jak 0MQ mogą być użyte.
Z powodzeniem używam 0MQ do przekazywania wiadomości w aplikacji do monitorowania zużycia energii elektrycznej (patrz http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
Używam zeroMQ. Chciałem prostego systemu przekazywania wiadomości i nie potrzebuję komplikacji brokera. Nie chcę też dużego systemu korporacyjnego zorientowanego na Javę.
Jeśli potrzebujesz szybkiego, prostego systemu i potrzebujesz obsługi wielu języków (używam C i .net), to polecam przyjrzeć się 0MQ.
Mogę dodać tylko 2 centy o ActiveMQ, ale ponieważ jest to jeden z najpopularniejszych:
Język, w którym chcesz pisać, może być ważny. Mimo że ActiveMQ ma większość klientów, ich implementacja w C # jest daleka od ukończenia w porównaniu z biblioteką Java.
Oznacza to, że niektóre podstawowe funkcje są niestabilne (protokół przełączania awaryjnego, który ... no cóż ... w niektórych przypadkach kończy się niepowodzeniem, brak obsługi ponownej dostawy), a innych po prostu nie ma. Ponieważ .NET nie wydaje się być tak ważny dla projektu, rozwój jest raczej powolny i wydaje się, że nie ma żadnego planu wydania. Bagażnik jest często zepsuty, więc jeśli weźmiesz to pod uwagę, możesz rozważyć przyczynienie się do projektu, jeśli chcesz, aby wszystko poszło do przodu.
Potem jest sam ActiveMQ, który ma wiele fajnych funkcji, ale także kilka bardzo dziwnych problemów. Używamy wersji Activemq Fuse (Progress) ze względów stabilności, ale nawet wtedy istnieje kilka dziwnych „błędów”, o których należy pamiętać:
W sumie jest to całkiem fajny produkt, jeśli możesz żyć z jego problemami:
A) nie bój się aktywnie angażować podczas korzystania z .NET
B) rozwijaj w Javie ;-)
Istnieje porównanie funkcji i wydajności RabbitMQ ActiveMQ i QPID podane na stronie
stronie http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
Osobiście wypróbowałem wszystkie powyższe trzy. RabbitMQ jest według mnie najlepszą pod względem wydajności, ale nie ma opcji przełączania awaryjnego i odzyskiwania. ActiveMQ ma najwięcej funkcji, ale działa wolniej.
Aktualizacja: HornetQ jest również opcją, na którą możesz spojrzeć, jest to skarga JMS, lepsza opcja niż ActiveMQ, jeśli szukasz rozwiązania opartego na JMS.
O moich początkowych doświadczeniach dotyczących AMQP, Qpid i ZeroMQ pisałem tutaj: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
Moja subiektywna opinia jest taka, że AMQP jest w porządku, jeśli naprawdę potrzebujesz stałych narzędzi do przesyłania wiadomości i nie martwisz się, że pośrednik może być wąskim gardłem. Ponadto brakuje obecnie klienta C ++ dla AMQP (Qpid nie uzyskał mojego wsparcia; nie jestem pewien co do klienta ActiveMQ), ale być może trwają prace. ZeroMQ może być inaczej.
W komentarzach tego postu na blogu jest trochę dyskusji na temat pisania przez Twittera własnej kolejki wiadomości, co może być interesujące.
Steve przeprowadził szeroko zakrojone testy obciążeń i obciążeń ActiveMQ, RabbitMQ itp. ActiveMQ jest w rzeczywistości dość wolny (znacznie wolniejszy niż Kestrel), RabbitMQ konsekwentnie zawiesza się ze zbyt dużą liczbą producentów i zbyt małą liczbą konsumentów.
Prawdopodobnie początkowo nie będziesz mieć obciążenia podobnego do Twittera :)
Niewiele aplikacji ma tyle konfiguracji strojenia, co ActiveMQ. Niektóre cechy wyróżniające ActiveMQ to:
Konfigurowalny rozmiar pobierania wstępnego. Konfigurowalne gwintowanie. Konfigurowalne przełączanie awaryjne. Konfigurowalne powiadomienie administracyjne dla producentów. ... szczegóły na:
Abie, wszystko sprowadza się do twojego przypadku użycia. Zamiast polegać na czyimś koncie dotyczącym przypadku użycia, możesz opublikować swój przypadek użycia na liście dyskusyjnej królików. Pytanie na Twitterze również da ci kilka odpowiedzi. Najlepsze życzenia, Alexis
O ZeroMQ aka 0MQ, jak już zapewne wiesz, to ten, który dostarczy ci najwięcej wiadomości na sekundę (były one około 4 milionów na sekundę na ich serwerze referencyjnym podczas ostatniego sprawdzania), ale jak już wiesz, dokumentacja nie istnieje. Trudno będzie ci znaleźć sposób na uruchomienie serwerów, nie mówiąc już o tym, jak z nich korzystać. Myślę, że częściowo dlatego nikt jeszcze nie wniósł wkładu w 0MQ.
Baw się dobrze!
Jeśli interesują Cię również komercyjne wdrożenia, powinieneś rzucić okiem na Nirvana z moich kanałów .
Nirvana jest intensywnie wykorzystywana w branży usług finansowych do tworzenia platform obrotu i dystrybucji cen na małą skalę na dużą skalę.
Obsługiwana jest szeroka gama języków programowania klienta w domenach korporacyjnych, internetowych i mobilnych.
Możliwości klastrowania są niezwykle zaawansowane i warto je sprawdzić, jeśli dla Ciebie ważne jest transparentne HA lub równoważenie obciążenia.
Nirvana można pobrać bezpłatnie w celach programistycznych.