Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
I dette indlæg vil vi forsøge at sammenligne og etablere nogle forskelle i de to mest populære meddelelsesmæglere, RabbitMQ og Apache Kafka.

Når vi ønsker at integrere meddelelsesmæglere i vores applikation, som giver os mulighed for let at skalere og forbinde vores system på en asynkron måde, er der mange meddelelsesmæglere, der kan gøre listen, hvorfra du er lavet, til at vælge en, som:

Hver af disse meddelelsesmæglere har deres egen liste over fordele og ulemper, men de mest udfordrende muligheder er de to første, RabbitMQ og Apache Kafka. I denne lektion viser vi punkter, der kan hjælpe med at indsnævre beslutningen om at gå sammen over hinanden. Endelig er det værd at påpege, at ingen af ​​disse er bedre end en anden i alle brugstilfælde, og det afhænger helt af, hvad du vil opnå, så der er ingen rigtige svar!

Vi starter med en simpel introduktion af disse værktøjer.

Apache Kafka

Som vi sagde i denne lektion, er Apache Kafka en distribueret, fejltolerant, vandret skalerbar, log. Dette betyder, at Kafka kan udføre en opdeling og regelbetegnelse meget godt, det kan replikere dine data for at sikre tilgængelighed og er meget skalerbar i den forstand, at du kan inkludere nye servere ved kørsel for at øge dets kapacitet til at administrere flere meddelelser.

Kafka Producent og Forbruger

RabbitMQ

RabbitMQ er en mere almindelig og enklere at bruge beskedmægler, der i sig selv registrerer, hvilke meddelelser der er forbrugt af klienten og vedvarer den anden. Selvom RabbitMQ-serveren af ​​en eller anden grund går ned, kan du være sikker på, at de meddelelser, der i øjeblikket findes i køer, er blevet gemt på filsystemet, så når RabbitMQ kommer tilbage igen, kan disse meddelelser behandles af forbrugerne på en ensartet måde.

RabbitMQ arbejder

Supermagt: Apache Kafka

Kafkas største supermagt er, at den kan bruges som et køsystem, men det er ikke det, der er begrænset til. Kafka er noget mere en cirkulær buffer der kan skalere så meget som en disk på maskinen i klyngen, og således giver os mulighed for at kunne genlæse beskeder. Dette kan gøres af klienten uden at være afhængig af Kafka-klyngen, da det er helt klientens ansvar at bemærke de meddelelsesmetadata, den læser i øjeblikket, og det kan se Kafka igen i et bestemt interval for at læse den samme besked igen.

Bemærk, at det tidspunkt, hvor denne meddelelse kan læses igen, er begrænset og kan konfigureres i Kafka-konfiguration. Så når tiden er forbi, er der ingen måde, en klient kan læse en ældre besked nogensinde igen.

Supermagt: RabbitMQ

RabbitMQs vigtigste supermagt er, at den simpelthen er skalerbar, er et højtydende køsystem, der har meget veldefinerede konsistensregler og evne til at oprette mange typer meddelelsesudvekslingsmodeller. For eksempel er der tre typer udveksling, du kan oprette i RabbitMQ:

  1. Direkte udveksling: Én til en udveksling af emner
  2. Emneudveksling: A emne er defineret, hvor forskellige producenter kan offentliggøre en besked, og forskellige forbrugere kan binde sig til at lytte til dette emne, så hver enkelt af dem modtager den besked, der sendes til dette emne.
  3. Fanout-udveksling: Dette er strengere end emneudveksling, da når en meddelelse offentliggøres på en fanout-udveksling, modtager alle forbrugere, der er forbundet til køer, der binder sig til fanout-udvekslingen, meddelelsen.

Har allerede bemærket forskellen mellem RabbitMQ og Kafka? Forskellen er, at hvis en forbruger ikke er forbundet til en fanout-udveksling i RabbitMQ, da en meddelelse blev offentliggjort, går den tabt, fordi andre forbrugere har fortæret meddelelsen, men dette sker ikke i Apache Kafka, da enhver forbruger kan læse enhver besked som de opretholder deres egen markør.

RabbitMQ er mæglercentreret

En god mægler er en, der garanterer det arbejde, det påtager sig, og det er hvad RabbitMQ er god til. Den vippes mod leveringsgarantier mellem producenter og forbrugere med kortvarige foretrukne frem for holdbare meddelelser.

RabbitMQ bruger mægleren selv til at styre tilstanden af ​​en besked og sikre, at hver besked leveres til hver berettiget forbruger.

RabbitMQ antager, at forbrugerne for det meste er online.

Kafka er producentcentreret

Apache Kafka er producentcentreret, da det er helt baseret på partitionering og en strøm af begivenhedspakker, der indeholder data og omdanner dem til holdbare meddelelsesmæglere med markører, der understøtter batchforbrugere, der muligvis er offline, eller onlineforbrugere, der ønsker beskeder med lav latenstid.

Kafka sørger for, at meddelelsen forbliver sikker indtil et bestemt tidsrum ved at replikere meddelelsen på dens noder i klyngen og opretholde en konsistent tilstand.

Så Kafka ikke formoder, at nogen af ​​dens forbrugere for det meste er online og heller ikke bekymrer sig.

Beskedbestilling

Med RabbitMQ, ordren udgivelse styres konsekvent og forbrugere modtager beskeden i selve den offentliggjorte ordre. På den anden side gør Kafka det ikke, da det antages, at offentliggjorte meddelelser er tunge i naturen, så forbrugerne er langsomme og kan sende meddelelser i en hvilken som helst rækkefølge, så det administrerer ikke ordren i sig selv så godt. Selvom vi kan oprette en lignende topologi til at styre ordren i Kafka ved hjælp af konsekvent hash-udveksling eller sharding-plugin., eller endnu flere slags topologier.

Den komplette opgave, der administreres af Apache Kafka, er at fungere som en "støddæmper" mellem den kontinuerlige strøm af begivenheder og de forbrugere, hvoraf nogle er online, og andre kan være offline - kun batchforbrug hver time eller endda dagligt.

Konklusion

I denne lektion studerede vi de store forskelle (og ligheder også) mellem Apache Kafka og RabbitMQ. I nogle miljøer har begge vist ekstraordinær ydeevne, da RabbitMQ bruger millioner af beskeder pr. Sekund, og Kafka har brugt flere millioner beskeder pr. Sekund. Den væsentligste arkitektoniske forskel er, at RabbitMQ administrerer sine meddelelser næsten i hukommelsen og så bruger en stor klynge (30+ noder), mens Kafka faktisk bruger beføjelserne til sekventielle disk I / O-operationer og kræver mindre hardware.

Igen afhænger brugen af ​​hver af dem stadig helt af brugssagen i en applikation. Glad beskeder !

Mus Sådan bruges Xdotool til at stimulere museklik og tastetryk i Linux
Sådan bruges Xdotool til at stimulere museklik og tastetryk i Linux
Xdotool er et gratis og open source kommandolinjeværktøj til simulering af museklik og tastetryk. Denne artikel dækker en kort vejledning om brug af x...
Mus Top 5 ergonomiske computermusprodukter til Linux
Top 5 ergonomiske computermusprodukter til Linux
Forårsager langvarig brug af computeren smerter i dit håndled eller fingre? Lider du af stive led og er konstant nødt til at ryste hænderne? Føler du ...
Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...