Úvod do ActiveMQ vs Kafka

Apache ActiveMQ je open-source, multi-protokol, Java-based messaging server. Implementuje JMS (Java Message Service) API a je schopen podporovat různé protokoly zpráv včetně AMQP, STOMP a MQTT. Obvykle se používá pro odesílání zpráv mezi aplikacemi / službami. V tomto tématu se budeme učit o ActiveMQ vs Kafka.

Na druhé straně je Apache Kafka open-source software pro zpracování toku vyvinutý společností LinkedIn (a později darovaný Apache), který efektivně spravuje jejich rostoucí data a přechází na zpracování v reálném čase z dávkového zpracování. Je psán v Scala a Java a je založen na modelu zasílání a odběru zpráv.

Srovnání mezi hlavami mezi ActiveMQ a Kafkou (infografika)

Níže jsou uvedeny hlavní rozdíly mezi ActiveMQ a Kafkou

Klíčové rozdíly mezi ActiveMQ a Kafkou

ActiveMQ a Kafka jsou navrženy pro různé účely. Níže jsou uvedeny hlavní rozdíly:

Kafka je distribuovaná streamovací platforma, která nabízí vysokou horizontální škálovatelnost. Rovněž poskytuje vysokou propustnost a proto se používá pro zpracování dat v reálném čase. ActiveMQ je univerzální řešení pro zasílání zpráv, které podporuje různé protokoly pro zasílání zpráv. Kafka je mnohem rychlejší než ActiveMQ. Dokáže zpracovat miliony zpráv za sekundu.

ActiveMQ podporuje fronty zpráv a publikuje / odebírá systémy zasílání zpráv. Kafka je naproti tomu založena na publikování / odběru, ale má určité výhody front zpráv.

ActiveMQ zaručuje, že zpráva bude doručena, ale u Kafky existuje pravděpodobnost (i když nízká), že zpráva nebude doručena.

Ke ztrátě zpráv v Kafce může dojít v následujícím scénáři:

  • Může se to stát při náročné zprávě paralelně. Zvažte situaci, kdy 2 zprávy přicházejí k zákazníkům: X a Y. Obě zprávy jsou zpracovávány paralelně. Při zpracování zpráv byl Y úspěšný a potvrdil offset. Při zpracování zprávy však X způsobil chybu. Vzhledem k tomu, že zpráva B má větší offset, Kafka uloží nejnovější offset a zpráva A se ke spotřebiteli nikdy nevrátí.

Je docela snazší implementovat přesně jedno doručování zpráv v ActiveMQ než v Kafce. K duplicitnímu doručování zpráv v Kafce může dojít v následujícím případě:

  • Spotřebitel tyto zprávy úspěšně spotřeboval a poté je odevzdal do svého místního obchodu, ale zhroutil se a nemohl odsouhlasit offset před Kafkou, než došlo k jeho selhání. Když se spotřebitel restartuje, Kafka doručí zprávy z posledního offsetu.

V Kafce je zpráva v podstatě párem klíč-hodnota. Užitečné zatížení zprávy je hodnota. Na druhé straně se klíč obvykle používá pro účely vytváření oddílů a pro umístění souvisejících zpráv do stejného oddílu musí obsahovat klíč pro konkrétní firmu.

V ActiveMQ sestává zpráva z metadat (záhlaví a vlastností) a těla (což je užitečné zatížení).

Srovnávací tabulka ActiveMQ vs Kafka

Pojďme diskutovat o 10 největších rozdílech mezi ActiveMQ a Kafkou

ActiveMQKafka
Jedná se o tradiční systém zasílání zpráv, který se zabývá malým množstvím dat. Má následující případy použití:

  • Transakční zprávy
  • Vysoce výkonná distribuce tržních dat
  • Clustering a model univerzálního asynchronního zasílání zpráv
  • Web Streaming dat
  • Klidné rozhraní API pro zasílání zpráv pomocí protokolu HTTP
Jedná se o distribuovaný systém určený ke zpracování obrovského množství dat. Má následující případy použití:

  • Zprávy
  • Sledování aktivity na webu
  • Metriky
  • Agregace protokolu
  • Streamové zpracování
  • Sourcing událostí
  • Potvrdit protokol
Má transakční podporu. Podporují se dvě úrovně transakcí:

  • Transakce JMS
  • Transakce XA

TransactionStore používá ke zpracování transakcí. TransactionStore bude ukládat do mezipaměti všechny zprávy a ACKS, dokud nedojde k potvrzení nebo vrácení zpět.

Kafka zpočátku nepodporoval transakce, ale od svého vydání 0.11 podporuje transakce do určité míry.
Udržuje stav doručení každé zprávy, což má za následek nižší propustnost.Producenti Kafky nečekají na potvrzení od Brokers. Makléři tak mohou psát zprávy velmi vysokou rychlostí, což vede k vyšší propustnosti
V programu ActiveMQ jsou výrobci povinni zajistit doručení zpráv.V Kafce je povinností spotřebitelů konzumovat všechny zprávy, které mají spotřebovat.
Nelze zajistit, aby byly zprávy přijímány ve stejném pořadí, v jakém byly odeslány.Může zajistit, aby zprávy byly přijímány v pořadí, v jakém byly odeslány na úrovni oddílů.
Existuje něco, co se nazývá selektor zpráv JMS API, který spotřebiteli umožňuje specifikovat zprávy, o které se zajímá. Práce filtrování zpráv tedy závisí na JMS a ne na aplikacích.Společnost Kafka nemá u makléřů žádnou koncepci filtrů, která by zajistila, že zprávy, které si zákazníci vyzvednou, odpovídají určitému kritériu. Filtrování musí provádět spotřebitelé nebo aplikace.
Je to platforma pro zasílání zpráv typu push, kde poskytovatelé zasílají zprávy spotřebitelům.Jde o platformu pro zasílání zpráv typu pull, kde zákazníci stahují zprávy od makléřů.
Není možné měřítko vodorovně. Neexistuje ani koncept replikace.Je vysoce škálovatelný. Díky replikacím oddílů nabízí také vyšší dostupnost.
Výkonnost fronty i tématu se s rostoucím počtem spotřebitelů snižuje.

S přidáváním nových zákazníků se to nezpomaluje.
Neposkytuje kontrolní součty k detekci poškození zpráv po vybalení z krabice.Obsahuje kontrolní součty k detekci poškození zpráv v úložišti a má komplexní sadu bezpečnostních funkcí.

Závěr

Viděli jsme, že Kafka a ActiveMQ mají různé případy použití. Společnost půjde na Kafku, pokud musí zpracovat obrovské množství dat v reálném čase a do jisté míry může nést ztráty zpráv. Zatímco ActiveMQ by byla správnou volbou, pokud by se zajímalo o jednorázové doručení a zprávy byly cenné (jako ve finančních transakcích).

Doporučený článek

Toto je průvodce ActiveMQ vs Kafka. Zde diskutujeme o klíčových rozdílech ActiveMQ vs Kafka s infografikou a srovnávací tabulkou. Další informace naleznete také v následujících článcích -

  1. Kafka vs Spark
  2. Prase vs Spark
  3. Hadoop vs Apache Spark
  4. Apache Storm vs Kafka: 9 nejlepších rozdílů, které musíte znát

Kategorie: