Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
V tomto příspěvku se pokusíme porovnat a stanovit určité rozdíly ve dvou nejpopulárnějších zprostředkovatelích zpráv, RabbitMQ a Apache Kafka.

Kdykoli chceme do naší aplikace integrovat makléře zpráv, což nám umožňuje snadno škálovat a propojit náš systém asynchronním způsobem, existuje mnoho makléřů zpráv, kteří si mohou ze seznamu, ze kterého jste vytvořeni, vybrat jednoho, například:

Každý z těchto zprostředkovatelů zpráv má svůj vlastní seznam kladů a záporů, ale nejnáročnější možnosti jsou první dva, RabbitMQ a Apache Kafka. V této lekci uvedeme seznam bodů, které mohou pomoci zúžit rozhodnutí jít s jedním nad druhým. Nakonec stojí za zmínku, že žádný z nich není ve všech případech použití lepší než jiný a zcela záleží na tom, čeho chcete dosáhnout, takže neexistuje žádná správná odpověď!

Začneme jednoduchým představením těchto nástrojů.

Apache Kafka

Jak jsme řekli v této lekci, Apache Kafka je distribuovaný protokol odolný vůči chybám, horizontálně škálovatelný, protokol odevzdání. To znamená, že Kafka dokáže velmi dobře provést rozdělení a pravidlo, dokáže replikovat vaše data, aby zajistila dostupnost, a je vysoce škálovatelná v tom smyslu, že můžete za běhu zahrnout nové servery a zvýšit tak svou kapacitu pro správu více zpráv.

Výrobce a spotřebitel společnosti Kafka

RabbitMQ

RabbitMQ je obecnější a jednodušší zprostředkovatel zpráv, který sám udržuje záznamy o tom, jaké zprávy klient spotřeboval, a přetrvává ten druhý. I když z nějakého důvodu server RabbitMQ selže, můžete si být jisti, že zprávy aktuálně přítomné ve frontách byly uloženy v souborovém systému, takže když se RabbitMQ znovu vrátí, mohou být tyto zprávy konzistentně zpracovávány spotřebiteli.

RabbitMQ pracuje

Velmoc: Apache Kafka

Hlavní supervelmocí Kafky je, že ji lze použít jako systém front, ale to není to, co je omezeno na. Kafka je něco podobnějšího kruhový nárazník který se může škálovat stejně jako disk na stroji v klastru, a tak nám umožňuje znovu číst zprávy. To může provést klient, aniž by musel záviset na kafkovském klastru, protože je zcela v odpovědnosti klienta, aby si všiml metadat zprávy, která právě čte, a může znovu navštívit Kafku později ve stanoveném intervalu, aby znovu přečetl stejnou zprávu.

Vezměte prosím na vědomí, že doba, po kterou lze tuto zprávu znovu přečíst, je omezená a lze ji nakonfigurovat v konfiguraci Kafka. Jakmile tedy ten čas vyprší, neexistuje způsob, jak by klient mohl znovu přečíst starší zprávu.

Velmoc: RabbitMQ

Hlavní supervelmoc RabbitMQ spočívá v tom, že je jednoduše škálovatelný, je vysoce výkonným systémem řazení do fronty, který má velmi dobře definovaná pravidla konzistence a schopnost vytvářet mnoho typů modelů pro výměnu zpráv. Například v RabbitMQ můžete vytvořit tři typy výměny:

  1. Přímá výměna: Individuální výměna tématu
  2. Výměna témat: A téma je definováno, na kterém mohou různí producenti publikovat zprávu a různí spotřebitelé se mohou zavázat k naslouchání tomuto tématu, takže každý z nich obdrží zprávu, která je odeslána na toto téma.
  3. Výměna fanout: Je to přísnější než výměna témat, protože když je zpráva publikována na výměně fanout, zprávu obdrží všichni spotřebitelé, kteří jsou připojeni k frontám, které se váží na výměnu fanout.

Již jsem si všiml rozdílu mezi RabbitMQ a Kafkou? Rozdíl je v tom, že pokud spotřebitel není při publikování zprávy připojen k výměně fanoutů v RabbitMQ, dojde ke ztrátě, protože zprávu spotřebovali ostatní spotřebitelé, ale v Apache Kafka se to nestane, protože každý spotřebitel může číst jakoukoli zprávu tak jako udržují svůj vlastní kurzor.

RabbitMQ je zaměřen na makléře

Dobrý makléř je někdo, kdo zaručuje práci, kterou na sebe bere, a v tom je RabbitMQ dobrý. Je nakloněn směrem k záruky doručení mezi producenty a spotřebiteli, s přechodným upřednostňováním před trvalými zprávami.

RabbitMQ používá samotného zprostředkovatele ke správě stavu zprávy a zajišťuje, aby byla každá zpráva doručena každému oprávněnému spotřebiteli.

RabbitMQ předpokládá, že spotřebitelé jsou většinou online.

Kafka je zaměřena na výrobce

Apache Kafka je zaměřený na výrobce, protože je zcela založen na rozdělení a proudu paketů událostí obsahujících data a jejich transformaci na trvalé makléře zpráv s kurzory, podporou dávkových spotřebitelů, kteří mohou být offline, nebo online spotřebitelů, kteří chtějí zprávy s nízkou latencí.

Kafka zajišťuje, že zpráva zůstane bezpečná až do zadaného časového období replikací zprávy na jejích uzlech v klastru a udržováním konzistentního stavu.

Takže, Kafko ne Předpokládejme, že některý z jeho spotřebitelů je většinou online, a to mu ani nevadí.

Objednávání zpráv

U RabbitMQ objednávka publikace je spravována důsledně a spotřebitelé obdrží zprávu v samotné publikované objednávce. Na druhou stranu to Kafka nedělá, protože předpokládá, že publikované zprávy mají těžký charakter, takže spotřebitelé jsou pomalí a mohou odesílat zprávy v libovolném pořadí, takže také nespravuje objednávku sama. Můžeme však nastavit podobnou topologii pro správu objednávky v Kafce pomocí důsledná výměna hash nebo sharding plugin., nebo dokonce více druhů topologií.

Úplným úkolem, který spravuje Apache Kafka, je chovat se jako „tlumič nárazů“ mezi nepřetržitým tokem událostí a spotřebiteli, z nichž někteří jsou online a jiní mohou být offline - pouze hromadná konzumace každou hodinu nebo dokonce denně.

Závěr

V této lekci jsme studovali hlavní rozdíly (a také podobnosti) mezi Apache Kafkou a RabbitMQ. V některých prostředích oba vykazovaly mimořádný výkon, například RabbitMQ spotřebuje miliony zpráv za sekundu a Kafka spotřebuje několik milionů zpráv za sekundu. Hlavní architektonický rozdíl spočívá v tom, že RabbitMQ spravuje své zprávy téměř v paměti, a proto používá velký klastr (více než 30 uzlů), zatímco Kafka ve skutečnosti využívá síly operací I / O sekvenčního disku a vyžaduje méně hardwaru.

Opět platí, že použití každého z nich stále zcela závisí na případu použití v aplikaci. Veselé zasílání zpráv !

Hry Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
OpenRA je herní engine Libre / Free Real Time Strategy, který obnovuje rané hry Westwood, jako je klasický Command & Conquer: Red Alert. Distribuované...
Hry Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Emulátor Dolphin vám umožní hrát vybrané hry Gamecube a Wii na osobních počítačích se systémem Linux (PC). Jako volně dostupný herní emulátor s otevř...
Hry Jak používat GameConqueror Cheat Engine v Linuxu
Jak používat GameConqueror Cheat Engine v Linuxu
Tento článek popisuje průvodce používáním cheatovacího modulu GameConqueror v systému Linux. Mnoho uživatelů, kteří hrají hry v systému Windows, často...