RabbitMQ forklart på 5 minutter eller mindre

Vi vil se i dag hvordan du kan øke hastigheten på lastetiden til sidene dine ved å utføre den tyngste behandlingen asynkront, alt administrert veldig enkelt, takket være RabbitMQ.

Stabiliteten og hastigheten til en applikasjon eller nettside er absolutt blant de viktigste faktorene for brukerne. Hvem har aldri forlatt et nettsted før de har sett den første siden fordi det tok for lang tid?

Hva er RabbitMQ

RabbitMQ er en åpen kildekode, distribuert og skalerbar meldingsmegler som fungerer som et mellomledd for effektiv kommunikasjon mellom produsenter og forbrukere.

RabbitMQ implementerer applikasjonslaget meldingsprotokoll AMQP, som er fokusert på å kommunisere asynkrone meldinger med leveringsgaranti gjennom bekreftelser på mottak av meldinger fra megler til produsent og fra forbrukere til produsent.

Hvordan fungerer RabbitHQ

På en forenklet måte definerer RabbitMQ køer som vil lagre meldinger sendt av produsenter til forbrukende applikasjoner får meldingen og behandler den. Det lar oss designe og implementere distribuerte systemer, der et system er delt inn i uavhengige moduler som kommuniserer med hverandre gjennom meldinger.

Som all kommunikasjon trenger vi en produsent, et budskap og en mottaker. I midten av kaken er RabbitMQ, som ville være stedet hvor meldingen venter på mottakeren.

La oss bedre forstå hvordan det fungerer ved å vite hvilke typer utvekslinger som representerer utveksling av meldinger.

Utvekslingstyper

Gjennom utveksling, når vi sender en melding via RabbitMQ, sender vi den ikke direkte til en kø; for at andre systemer skal lese den, sender vi den til en sentral, som er ansvarlig for å videresende meldinger til forskjellige køer.

Bildekreditt: CloudAQMP

Utvekslingstypene er Direct, Fanout, Topic og Readers.

Direkte utveksling

Anta at en produsent må utstede en kjøpsbekreftelsesmelding til tre forbrukere. Det vil si at systemet må kommunisere med tre andre forskjellige systemer for å gjennomføre kjøpet.

  Blir du svimmel av å se på telefonen din? Deaktiver animasjoner

Ettersom RabbitMQ sender meldingen separat til hver kø, er det momentum for å få disse andre systemene til å motta meldingen direkte.

Normalt sender sentralen meldingen videre til køene, men vi ønsker ofte ikke at meldingene våre skal sendes til alle køene. Derfor er det flere vilkår vi kan stille for å få en utveksling til å fungere.

Så du kan få meldingen sendt til bare én forbruker; i stedet for å bli sendt til alle.

Bindingsnøkkel: For å koble en kø til en sentral, må du opprette en binding, et forhold mellom en kø og en sentral, som en kobling.

Rutingnøkkel: I denne bindingen kan vi også lage et element som kalles en rutingnøkkel, som med andre ord er en nøkkel til å videresende meldingene våre til en spesifikk kø.

Hvis du har en rutenøkkel X, en rutenøkkel Y og en rutenøkkel Z, vil for eksempel meldingen med rutenøkkel Y gå gjennom kø Y og leveres direkte til forbrukeren du definerte for å motta meldingen.

På denne måten kan vi ha flere køer knyttet til en sentral, men samtidig kan de også ha ulike relasjoner til sentralene ved hjelp av rutenøklene.

Fanout Exchange

Når meldingen sendes til sentralen, sendes den til alle køer som er koblet til den. Så hvis du har 10 køer koblet til en fanout-sentral, vil alle køer motta meldingen som ble sendt.

Emneutveksling

Det er en av de mest fleksible utvekslingene, som lar oss sende meldinger i henhold til emnet. Og basert på måten du navngir rutingnøklene på, er det mulig å lage mønstre av regler og relasjoner mellom systemer.

For eksempel: rutenøkkel (x.*); rutenøkkel(*.z); rutenøkkel (*.y.*).

Hva er AQMP i RabbitMQ

AMQP (Advanced Message Queuing Protocol) er en åpen meldingsprotokoll som brukes til å definere transporten av meldinger mellom flere applikasjoner. Den ligner på HTTP- og TCP-protokollene ved at den er en protokoll på trådnivå, bortsett fra at den tillater asynkron transport.

RabbitMQ valgte å implementere AMQP av flere grunner. Den første er at denne protokollen er beskrevet som en standard for mellomvare, i motsetning til JMS, som definerer en API.

Et internasjonalt konsortium, inkludert store selskaper som Red Hat, Cisco Systems og Microsoft, skrev denne AMQP-spesifikasjonen. Den andre er interoperabiliteten til denne protokollen, som gjør at enhver applikasjon som implementerer AMQP kan kommunisere med en AMQP-megler.

  Fiks Forza Horizon 5 fast på lasteskjermen

AMQP er ikke den eneste protokollen som brukes av RabbitMQ. Bildet nedenfor representerer alle protokollene, språkene og APIene som er implementert og/eller støttet av RabbitMQ.

De beste funksjonene til RabbitMQ

I tillegg til å tillate integrering av forskjellige applikasjoner gjennom meldinger asynkront og fra forskjellige steder, tilbyr RabbitMQ oss andre funksjoner som har gjort det veldig populært i meldingsmeglernes verden:

Pålitelig lagring

RabbitMQ har flere funksjoner som lar den garantere meldingslevering. Blant disse gir den lagring når ingen forbrukere kan motta meldingen. Det lar forbrukere akseptere leveringen av meldingen for å sikre at den har blitt behandlet vellykket.

Hvis behandlingen mislykkes, lar RabbitMQ meldingen settes i kø for å bli konsumert av en annen forekomst av forbrukeren eller behandles på nytt av den samme forbrukeren som opprinnelig mislyktes når den gjenopprettes.

RabbitMQ garanterer også leveringsrekkefølgen av meldingene; det vil si at de blir konsumert i samme rekkefølge som de ankom i RabbitMQ-køene.

Oppretting av klynger

Selv om RabbitMQ gir god ytelse ved å behandle tusenvis av meldinger per sekund, må den noen ganger være i stand til å behandle et større antall meldinger uten å påvirke applikasjonsytelsen.

For dette tillater RabbitMQ opprettelsen av klynger for å skalere løsningen horisontalt, noe som er transparent for både produsenter og forbrukere.

Svært tilgjengelige køer

I RabbitMQ kan køer replikeres på tvers av flere noder i en klynge, noe som sikrer at i tilfelle nodefeil eller nedetid, kan megleren fortsette å motta meldinger fra produsenter og levere dem til de riktige forbrukerne.

Fleksibel ruting

I RabbitMQ kan fleksible rutingsregler defineres, selv etter et visst mønster, for å rute meldinger mellom sentraler og køer, gjennom bindinger.

Støtte for flere protokoller

I tillegg til å støtte AMQP-protokollen, støtter RabbitMQ STOMP, MQTT og HTTP gjennom plugins. Den inneholder også autentiserings- og tilgangskontrollmekanismer for hver meglers komponenter.

Reelle brukstilfeller av RabbitMQ

De viktigste brukstilfellene av RabbitMQ er å muliggjøre garantien for asynkronitet mellom applikasjoner, redusere koblingen mellom applikasjoner, distribuere varsler og kontrollere køen av jobber i bakgrunnen.

  Et bedre alternativ til Google Translate?

Imidlertid er de praktiske brukstilfellene av RabbitMQ i e-handel, der t brukes til å manipulere, behandle og videresende salgsordrene dine til systemer i andre sektorer, for eksempel distribusjon og utstedelse av fakturaer.

Ved behandling av bestillinger kan du videresende salgsmeldingen til distribusjonssentralen og et fakturaområde. I dette opplegget fungerer alt horisontalt, etter det asynkrone mønsteret for å sende meldinger, men det er ofte mulig å sende en handling til flere køer.

Etter forrige eksempel kan denne funksjonen være svært nyttig når kunden foretar et kjøp og produktet må klargjøres for distribusjon, transport og fakturaer.

Og siden hver av disse sektorene er et annet system, er RabbitMQs mål å videresende alle disse meldingene til de tilsvarende systemene.

Rabbit MQ-alternativer:

RabbitMQ er mye enklere enn det ser ut, og det er flere alternativer til det som inkluderer:

#1. IronMQ

IronMQ er superrask programvare for meldingskø. Den er svært tilgjengelig, slitesterk i design, og helst for engangslevering. IronMQ er den kraftigste skybaserte løsningen for moderne applikasjonsarkitektur.

Den støtter push-køer, pull-køer og lange avstemninger, som holder avstemningsforespørsler åpne lenger. Dessuten kan den bruke flere datasentre med høy tilgjengelighet, noe som letter skalerbarheten.

Du kan distribuere i skyen, på delt eller dedikert maskinvare, eller på stedet. Den har også en rekke klientbiblioteker med lettlest dokumentasjon.

#2. Apache Kafka

Kafka er en plattform med sterk tilstedeværelse innen distribuert begivenhetsstrømming. I kjernen er Kafka utformet som en replikert, distribuert, vedvarende forpliktelseslogg.

Dens største brukervennlighet er hendelsesdrevne kraftmikrotjenester eller storskala strømbehandlingsapplikasjoner, som automatisk replikerer hendelser asynkront i klyngen til feiltoleranse og høy tilgjengelighet.

#3. Apache ActiveMQ

ActiveMQ er en Java-basert multiprotokoll Message Broker. Med den kan vi integrere applikasjoner ved å bruke AMQP-meldingskøprotokollen på applikasjonslaget.

Den implementerer flere protokoller for integrasjon, for eksempel JMS (native Java) og Stomp (som kan brukes av PHP-applikasjoner), blant andre.

I tillegg har Amazon sin «administrerte» versjon kalt Amazon MQ, som gjør det mye enklere å bruke tjenesten.

Siste ord

Meldingsmeglere har tradisjonelt vært en viktig brikke innenfor organisasjoners arkitektur. Likevel, med økningen i brukere som går inn i bedriftens systemer gjennom ulike kanaler, trengs det produkter som gjør at de kan skaleres horisontalt til en lav kostnad. Tillater behandling av et stort antall meldinger per sekund.

Det er her en ny generasjon meglere, som RabbitMQ, blir mer relevante i moderne applikasjoner, som søker å tilby høye nivåer av tilgjengelighet, pålitelighet, interoperabilitet og ytelse til våre kunder.

Du kan også utforske noen pålitelige RabbitMQ-vertsplattformer for applikasjonen din.