RabbitMQ forklaret på 5 minutter eller mindre

Vi vil i dag se, hvordan du kan fremskynde indlæsningstiden for dine sider ved at udføre den tungeste behandling asynkront, alt styret meget enkelt, takket være RabbitMQ.

Stabiliteten og hastigheden af ​​en applikation eller hjemmeside er bestemt blandt de vigtigste faktorer for brugerne. Hvem har aldrig forladt et websted, før han overhovedet har set den første side, fordi det tog for lang tid?

Hvad er RabbitMQ

RabbitMQ er en open source, distribueret og skalerbar meddelelsesmægler, der fungerer som et mellemled for effektiv kommunikation mellem producenter og forbrugere.

RabbitMQ implementerer applikationslagsmeddelelsesprotokollen AMQP, som er fokuseret på at kommunikere asynkrone beskeder med leveringsgaranti gennem bekræftelser på modtagelse af beskeder fra mægler til producent og fra forbrugere til producent.

Hvordan virker RabbitHQ

På en forenklet måde definerer RabbitMQ køer, der gemmer beskeder sendt af producenter, indtil forbrugende applikationer får beskeden og behandler den. Det giver os mulighed for at designe og implementere distribuerede systemer, hvor et system er opdelt i uafhængige moduler, der kommunikerer med hinanden gennem beskeder.

Som al kommunikation har vi brug for en producent, et budskab og en modtager. I midten af ​​kagen er RabbitMQ, som ville være stedet, hvor beskeden venter på modtageren.

Lad os bedre forstå, hvordan det fungerer, ved at kende de typer udvekslinger, der repræsenterer udvekslingen af ​​beskeder.

Udvekslingstyper

Gennem udvekslinger, når vi sender en besked via RabbitMQ, sender vi den ikke direkte til en kø; for at andre systemer kan læse det, sender vi det til en central, som er ansvarlig for at videresende beskeder til forskellige køer.

Billedkredit: CloudAQMP

Udvekslingstyperne er Direkte, Fanout, Emne og Læsere.

Direkte udveksling

Antag, at en producent skal udsende en købsbekræftelse til tre forbrugere. Det vil sige, at systemet skal kommunikere med tre andre forskellige systemer for at kunne foretage købet.

Da RabbitMQ sender beskeden separat til hver kø, er der momentum til at få disse andre systemer til at modtage beskeden direkte.

  Sådan skriver du en pressemeddelelse [+ 4 Templates]

Normalt sender centralen beskeden videre til køerne, men vi ønsker ofte ikke, at vores beskeder sendes til alle køerne. Derfor er der flere betingelser, som vi kan stille for at få en udveksling til at fungere.

Så du kan få din besked sendt til kun én forbruger; i stedet for at blive sendt til alle.

Binding Key: For at forbinde en kø til en central, skal du oprette en bind, en relation mellem en kø og en central, ligesom en connector.

Routing Key: I denne binding kan vi også oprette et element kaldet en routing key, som med andre ord er en nøgle til at videresende vores beskeder til en specifik kø.

Hvis du har en routingnøgle X, en routingnøgle Y og en routingnøgle Z, vil meddelelsen med routingnøgle Y for eksempel gå gennem kø Y og blive leveret direkte til den forbruger, du har defineret til at modtage beskeden.

På denne måde kan vi have flere køer forbundet til en central, men samtidig kan de også have forskellige relationer til centralerne ved hjælp af routing-nøglerne.

Fanout Exchange

Når beskeden sendes til centralen, sendes den til alle køer, der er forbundet til den. Så hvis du har 10 køer forbundet til en fanout-central, vil alle køer modtage den besked, der blev sendt.

Emneudveksling

Det er en af ​​de mest fleksible udvekslinger, der giver os mulighed for at sende beskeder i henhold til emnet. Og baseret på den måde, du navngiver routingnøglerne på, er det muligt at skabe mønstre af regler og relationer mellem systemer.

For eksempel: rutenøgle (x.*); routing nøgle(*.z); rutenøgle (*.y.*).

Hvad er AQMP i RabbitMQ

AMQP (Advanced Message Queuing Protocol) er en åben meddelelsesprotokol, der bruges til at definere transporten af ​​meddelelser mellem flere applikationer. Det ligner HTTP- og TCP-protokollerne, idet det er en protokol på wire-niveau, bortset fra at den tillader asynkron transport.

RabbitMQ valgte at implementere AMQP af flere grunde. Den første er, at denne protokol er beskrevet som en standard for middleware, i modsætning til JMS, som definerer en API.

Et internationalt konsortium, herunder store virksomheder som Red Hat, Cisco Systems og Microsoft, skrev denne AMQP-specifikation. Den anden er interoperabiliteten af ​​denne protokol, som gør det muligt for enhver applikation, der implementerer AMQP, at kommunikere med en AMQP-mægler.

  Sådan tæller du dagene mellem to datoer i Google Sheets

AMQP er ikke den eneste protokol, der bruges af RabbitMQ. Billedet nedenfor repræsenterer alle protokoller, sprog og API’er implementeret og/eller understøttet af RabbitMQ.

Bedste funktioner i RabbitMQ

Ud over at tillade integration af forskellige applikationer gennem meddelelser asynkront og fra forskellige lokationer, tilbyder RabbitMQ os andre funktioner, der har gjort det meget populært inden for messaging-mæglernes verden:

Pålidelig opbevaring

RabbitMQ inkorporerer flere funktioner, der gør det muligt at garantere levering af beskeder. Blandt disse giver det opbevaring, når ingen forbrugere kan modtage beskeden. Det giver forbrugerne mulighed for at acceptere leveringen af ​​beskeden for at sikre, at den er blevet behandlet med succes.

Hvis behandlingen mislykkes, tillader RabbitMQ, at beskeden sættes i kø for at blive forbrugt af en anden forekomst af forbrugeren eller behandles igen af ​​den samme forbruger, som oprindeligt mislykkedes, da den genoprettes.

RabbitMQ garanterer også leveringsrækkefølgen af ​​meddelelserne; det vil sige, at de forbruges i samme rækkefølge, som de ankom i RabbitMQ-køerne.

Oprettelse af klynger

Selvom RabbitMQ giver stor ydeevne ved at behandle tusindvis af meddelelser i sekundet, skal den nogle gange være i stand til at behandle et større antal meddelelser uden at påvirke applikationens ydeevne.

Til dette tillader RabbitMQ oprettelsen af ​​klynger for at skalere løsningen horisontalt, hvilket er gennemsigtigt for både producenter og forbrugere.

Meget tilgængelige køer

I RabbitMQ kan køer replikeres på tværs af flere noder i en klynge, hvilket sikrer, at mægleren i tilfælde af en knudefejl eller nedetid kan fortsætte med at modtage beskeder fra producenter og levere dem til de relevante forbrugere.

Fleksibel routing

I RabbitMQ kan fleksible routingregler defineres, selv efter et bestemt mønster, for at dirigere beskeder mellem udvekslinger og køer gennem bindinger.

Understøttelse af flere protokoller

Udover at understøtte AMQP-protokollen, understøtter RabbitMQ STOMP, MQTT og HTTP via plugins. Det inkorporerer også autentificerings- og adgangskontrolmekanismer for hver mæglers komponenter.

Real-life Use Cases af RabbitMQ

De vigtigste use cases af RabbitMQ er at muliggøre garantien for asynkronitet mellem applikationer, reducere koblingen mellem applikationer, distribuere advarsler og kontrollere køen af ​​job i baggrunden.

  Sådan ser du alle de apps, du har købt fra Mac App Store

De praktiske brugssager af RabbitMQ er dog i e-handel, hvor t bruges til at manipulere, behandle og videresende dine salgsordrer til systemer i andre sektorer, såsom distribution og udstedelse af fakturaer.

Ved behandling af ordrer kan du videresende din salgsbesked til distributionscenteret og et fakturaområde. I denne ordning fungerer alt horisontalt, efter det asynkrone mønster for afsendelse af beskeder, men det er ofte muligt at sende en handling til flere køer.

Efter det foregående eksempel kan denne funktion være meget nyttig, når kunden foretager et køb, og produktet skal forberedes til distribution, transport og fakturaer.

Og da hver af disse sektorer er et andet system, er RabbitMQ’s mål at videresende alle disse beskeder til de tilsvarende systemer.

Rabbit MQ alternativer:

RabbitMQ er meget enklere, end det ser ud, og der er flere alternativer til det, som inkluderer:

#1. IronMQ

IronMQ er superhurtig beskedkø-software. Den er meget tilgængelig, holdbar i designet og helst til engangslevering. IronMQ er den mest kraftfulde cloud-native løsning til moderne applikationsarkitektur.

Det understøtter push-køer, pull-køer og lange afstemninger, hvilket holder afstemningsanmodninger åbne længere. Desuden kan den bruge flere højtilgængelige datacentre, hvilket letter skalerbarheden.

Du kan implementere i skyen, på delt eller dedikeret hardware eller på stedet. Det har også en række klientbiblioteker med letlæselig dokumentation.

#2. Apache Kafka

Kafka er en platform med en stærk tilstedeværelse i distribueret begivenhedsstreaming. I sin kerne er Kafka designet som en replikeret, distribueret, persistent commit-log.

Dens største anvendelighed er til hændelsesdrevne power-mikrotjenester eller storskala streambehandlingsapplikationer, der automatisk replikerer hændelser asynkront i klyngen til fejltolerance og høj tilgængelighed.

#3. Apache ActiveMQ

ActiveMQ er en Java-baseret multiprotokol Message Broker. Med den kan vi integrere applikationer ved hjælp af AMQP-meddelelseskøprotokollen på applikationslaget.

Det implementerer flere protokoller til integration, såsom JMS (native Java) og Stomp (som kan bruges af PHP-applikationer), blandt andre.

Derudover har Amazon sin “administrerede” version kaldet Amazon MQ, hvilket gør det meget nemmere at bruge tjenesten.

Afsluttende ord

Messaging-mæglere har traditionelt været en vigtig brik inden for organisationers arkitektur. Alligevel, med stigningen i antallet af brugere, der kommer ind i virksomhedens systemer gennem forskellige kanaler, er der behov for produkter, der gør det muligt at skalere dem horisontalt til en lav pris. Tillader behandling af et stort antal beskeder i sekundet.

Det er her, en ny generation af mæglere, såsom RabbitMQ, bliver mere relevante i moderne applikationer, som søger at tilbyde høje niveauer af tilgængelighed, pålidelighed, interoperabilitet og ydeevne til vores kunder.

Du kan også udforske nogle pålidelige RabbitMQ-hostingplatforme til din applikation.