ActiveMQ vs Apollo vs Kafka

Nie mam doświadczenia z *MQs i szukam wiedzy na temat JMS i kolejek wiadomości w ogóle. W ten sposób zastanawiam się, czy powinienem zacząć od ActiveMQ, czy po prostu "zignorować" go całkowicie i zacząć od nauczenia się Apollo. Czy Apollo jest tak samo funkcjonalny jak ActiveMQ? Czy implementuje JMS 2.0 (widzę, że ActiveMQ utknął z 1.1)? Czy ominie mnie coś naprawdę ważnego?

Również, jak Kafka porównuje się do tych dwóch rozwiązań?

Author: Martin, 2014-12-27

3 answers

Apache ActiveMQ to świetny koń pociągowy pełen funkcji i ładnych rzeczy. Nie jest to najszybsze oprogramowanie MQ, ale wystarczająco szybkie dla większości przypadków użycia. Wśród funkcji są elastyczne klustrowanie, fail-over, integracje z różnymi serwerami aplikacji, zabezpieczenia itp.

Apache Apollo jest próbą napisania nowego rdzenia dla ActiveMQ, aby poradzić sobie z dużą ilością klientów i wiadomości. Nie posiada wszystkich przyjemnych i wygodnych funkcji ActiveMQ, ale skaluje się o wiele lepiej. Apache Apollo to naprawdę szybka implementacja MQ, gdy zapewnisz mu duży wielordzeniowy serwer i tysiące jednoczesnych połączeń. Ma ładny, prosty interfejs użytkownika, ale nie jest rozwiązaniem "uniwersalnym".

Wydaje się, że trwa próba połączenia wielu funkcji ActiveMQ z HornetQ pod nazwą ActiveMQ Artemis. HornetQ ma wsparcie dla JMS2. 0, więc moje skromne przypuszczenie jest takie, że prawdopodobnie pojawi się w ActiveMQ 6.x.

JIRA , Github

Kafka to inna bestia. Jest to bardzo prosty broker wiadomości przeznaczony do skalowania trwałych subskrypcji publikowania (tematów) tak szybko, jak to możliwe na wielu serwerach. W przypadku małych i średnich wdrożeń Kafka prawdopodobnie nie jest najlepszym rozwiązaniem. Ma również sposób na osiągnięcie wysokiej przepustowości, więc musisz dużo handlować pod względem elastyczności, aby uzyskać wysoką rozproszoną przepustowość. Jeśli jesteś nowy w obszarze mq i brokerów, myślę, że Kafka jest przesada. Z drugiej strony-jeśli masz przyzwoity klaster serwerów i zastanów się, jak przepchnąć przez nią jak najwięcej wiadomości - daj Kafce spin!

 89
Author: Petter Nordlander,
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
2015-05-14 16:20:25

To jest starsze pytanie, ale podam tutaj bardziej nowoczesną odpowiedź.

  • Projekt Apollo jest nieoficjalnie martwy i sugerują, że Artemis jest nową gorącą istotą. (link ) (pozornie) wstrzymany rozwój Apolla nie daje mi wiary w przyszłość Artemidy.
  • moje doświadczenie jest podobne do odpowiedzi Pettera, ponieważ ActiveMQ jest bogaty w funkcje i zdolny. Wydaje się jednak, że każde wydanie naprawia losowe awarie i wycieki pamięci, a to nie inspiruje pewność siebie. Jest stabilny dla mojego projektu (który używa klastrowania), ale widzieliśmy dziwne zachowanie i awarie w brokerze w ciągu ostatnich kilkunastu wydań (obecnie używa 5.14.3)
  • nie używałem RabbitMQ (mój obecny projekt jest zaangażowany w ActiveMQ), ale wypróbuję go w następnym projekcie, który wymaga magistrali wiadomości. Brak zlewozmywaka z funkcjami do obsługi, miejmy nadzieję, oznacza, że jest bardziej stabilny.

EDIT: wydało się 2.3.0 Apache Artemis ~Sept 5 2017. Więc wydaje się, że postępuje od teraz. Ale (link ) changelog nadal wydaje się zbyt przerażający.

 22
Author: Matthew B.,
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
2017-09-26 19:37:37

Jestem benchmarkiem wydajności ActiveMQ, Apollo, HornetQ w scenariuszu non persistent i persistent, myślę, że pomoże Ci wybrać, który z nich powinien być używany, link jak pokazano poniżej: http://hiramchirino.com/jms-benchmark/ubuntu-2600k/index.html

 2
Author: Tommy,
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
2018-06-13 17:57:01