Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
Ebben a bejegyzésben megpróbáljuk összehasonlítani és megállapítani a két legnépszerűbb üzenetközvetítő, a RabbitMQ és az Apache Kafka különbségeit.

Amikor az üzenetközvetítőket szeretnénk integrálni alkalmazásunkba, amely lehetővé teszi számunkra a könnyű méretezést és a rendszerünk aszinkron módon történő összekapcsolását, sok üzenetközvetítő állíthatja össze azt a listát, amelyből választani szeretne, például:

Ezen üzenetközvetítők mindegyikének megvan a saját előnyei és hátrányai, de a legnagyobb kihívást az első kettő jelenti, a RabbitMQ és az Apache Kafka. Ebben a leckében felsorolunk olyan pontokat, amelyek segíthetnek az egymással szembeni döntés szűkítésében. Végül érdemes felhívni a figyelmet arra, hogy ezek közül egyik sem minden esetben jobb a másiknál, és ez teljesen attól függ, hogy mit akar elérni, tehát nincs egy helyes válasz!

Kezdjük ezen eszközök egyszerű bevezetésével.

Apache Kafka

Ahogy ebben a leckében elmondtuk, az Apache Kafka elosztott, hibatűrő, vízszintesen méretezhető, elkötelezett napló. Ez azt jelenti, hogy a Kafka nagyon jól képes megosztani és szabályozni kifejezést, az elérhetőség biztosítása érdekében képes megismételni az adatait, és nagymértékben skálázható abban az értelemben, hogy futás közben új szervereket is felvehet, hogy növelje a kapacitását több üzenet kezelésére.

Kafka Producer és Consumer

RabbitMQ

A RabbitMQ egy általánosabb célú és egyszerűbben használható üzenetközvetítő, amely maga is nyilvántartást vezet arról, hogy milyen üzeneteket fogyasztott az ügyfél, és megmarad a másik. Még akkor is, ha valamilyen oknál fogva a RabbitMQ szerver meghibásodik, biztos lehet abban, hogy a várólistákon jelenleg jelen lévő üzeneteket a fájlrendszerben tárolták, így amikor a RabbitMQ újra felkerül, a fogyasztók ezeket az üzeneteket következetesen feldolgozhatják.

RabbitMQ Working

Szuperhatalom: Apache Kafka

A Kafka fő szuperhatalma, hogy használható soros rendszerként, de nem ez korlátozódik. Kafka valami hasonlóbb egy kör alakú puffer amely a fürt gépén lévő lemez méretéhez hasonlóan képes méretezni, és ezáltal lehetővé teszi számunkra az üzenetek újraolvasását. Ezt az ügyfél megteheti anélkül, hogy a Kafka-fürttől kellene függenie, mivel a kliens teljes felelőssége megjegyezni az éppen olvasott üzenetek metaadatait, és később, meghatározott időközönként újra felkeresheti a Kafkát, hogy újra elolvassa ugyanazt az üzenetet.

Felhívjuk figyelmét, hogy az üzenet újraolvasásának ideje korlátozott, és a Kafka konfigurációjában konfigurálható. Tehát, ha ez az idő letelt, az ügyfél soha nem olvashatja el a régebbi üzeneteket.

Szuperhatalom: RabbitMQ

A RabbitMQ fő szuperhatalma, hogy egyszerűen skálázható, nagy teljesítményű sorbanállási rendszer, amely nagyon jól definiált konzisztencia-szabályokkal rendelkezik, és sokféle üzenetváltási modell létrehozására képes. Például háromféle cserét hozhat létre a RabbitMQ-ban:

  1. Közvetlen csere: egy-egy témacsere
  2. Témacsere: A téma definiálva van, amelyen a különböző gyártók közzétehetnek egy üzenetet, és a különböző fogyasztók kötelezhetik magukat arra, hogy meghallgassák az adott témát, így mindegyikük megkapja az üzenetet, amelyet erre a témára küldtek.
  3. Fanout csere: Ez szigorúbb, mint a témacsere, mivel amikor egy üzenetet közzétesznek egy fanout exchange-en, akkor minden olyan fogyasztó megkapja az üzenetet, aki kapcsolódik a fanout csoporthoz köthető sorokhoz.

Már észrevette a különbséget RabbitMQ és Kafka között? A különbség az, hogy ha a fogyasztó nem kapcsolódik egy fanout csoporthoz a RabbitMQ-ban, amikor egy üzenetet közzétettek, akkor az elveszik, mert más fogyasztók elfogyasztották az üzenetet, de ez nem történik meg az Apache Kafka-ban, mivel bármely fogyasztó elolvashat bármilyen üzenetet mint fenntartják a saját kurzort.

A RabbitMQ közvetítőközpontú

Jó bróker az, aki garantálja az általa vállalt munkát, és ebben jó a RabbitMQ. Felé dől szállítási garanciák a gyártók és a fogyasztók között, a tartós üzenetek helyett inkább az átmeneti.

A RabbitMQ maga a közvetítőt használja az üzenet állapotának kezelésére és annak biztosítására, hogy minden üzenet minden jogosult fogyasztóhoz eljusson.

A RabbitMQ feltételezi, hogy a fogyasztók többnyire online vannak.

Kafka termelőközpontú

Az Apache Kafka termelőközpontú, mivel teljes egészében a particionáláson és az eseményeket tartalmazó csomagokon alapszik, amelyek adatokat tartalmaznak, és átalakítják őket kurzorral ellátott tartós üzenetközvetítőkké, támogatják az offline offline kötegelt fogyasztókat vagy olyan online fogyasztókat, akik alacsony késéssel kívánnak üzeneteket.

A Kafka gondoskodik arról, hogy az üzenet egy meghatározott ideig biztonságban maradjon, replikálva az üzenetet a fürt csomópontjain és fenntartva az állandó állapotot.

Szóval, Kafka nem feltételezzük, hogy bármelyik fogyasztója többnyire online, és nem is érdekli.

Üzenetrendelés

A RabbitMQ-val a megrendelés a kiadói tevékenységeket következetesen kezelik és a fogyasztók magukat a közzétett megrendelésben kapják meg. A másik oldalon a Kafka nem így tesz, mivel feltételezi, hogy a közzétett üzenetek nehéz természetűek, így a fogyasztók lassúak és bármilyen sorrendben küldhetnek üzeneteket, így nem kezeli a megrendelést önmagában sem. Bár felállíthatunk egy hasonló topológiát a Kafka megrendelésének kezelésére a következetes hash csere vagy aprító plugin., vagy még többféle topológiát.

Az Apache Kafka által irányított teljes feladat az, hogy „lengéscsillapítóként” viselkedjen az események folyamatos áramlása és azok között a fogyasztók között, amelyekből egyesek online, mások pedig offline állapotban lehetnek - csak óránként vagy akár napi rendszerességgel fogyasztanak.

Következtetés

Ebben a leckében megvizsgáltuk az Apache Kafka és a RabbitMQ közötti főbb különbségeket (és hasonlóságokat is). Bizonyos környezetekben mindkettő rendkívüli teljesítményt nyújtott, például a RabbitMQ másodpercenként több millió üzenetet fogyaszt, Kafka pedig több millió üzenetet fogyasztott másodpercenként. A legfőbb architekturális különbség az, hogy a RabbitMQ szinte a memóriában kezeli az üzeneteit, így nagy fürtöt (30+ csomópontot) használ, míg a Kafka valójában a szekvenciális lemez I / O műveletek erejét használja és kevesebb hardvert igényel.

Ismét mindegyikük használata továbbra is teljesen függ az alkalmazás használati esetétől. Boldog üzenetküldés !

HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...
Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...
Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...