RabbitMQ izskaidrots 5 min vai mazāk

Šodien mēs redzēsim, kā paātrināt jūsu lapu ielādi, asinhroni veicot vissmagāko apstrādi, kas viss tiek pārvaldīts ļoti vienkārši, pateicoties RabbitMQ.

Lietojumprogrammas vai vietnes stabilitāte un ātrums noteikti ir viens no svarīgākajiem faktoriem lietotājiem. Kurš nekad nav pametis vietni, pirms nav redzējis pirmo lapu, jo tas prasīja pārāk ilgu laiku?

Kas ir RabbitMQ

RabbitMQ ir atvērtā koda, izplatīts un mērogojams ziņojumapmaiņas brokeris, kas kalpo kā starpnieks efektīvai saziņai starp ražotājiem un patērētājiem.

RabbitMQ ievieš lietojumprogrammas slāņa ziņojumapmaiņas protokolu AMQP, kas ir vērsts uz asinhrono ziņojumu saziņu ar piegādes garantiju, apstiprinot ziņojumu saņemšanu no brokera ražotājam un no patērētājiem ražotājam.

Kā darbojas RabbitHQ

Vienkāršotā veidā RabbitMQ definē rindas, kas glabās ražotāju nosūtītos ziņojumus, līdz patērētās lietojumprogrammas saņems ziņojumu un to apstrādās. Tas ļauj mums izstrādāt un ieviest izkliedētās sistēmas, kurās sistēma ir sadalīta neatkarīgos moduļos, kas sazinās savā starpā, izmantojot ziņojumus.

Tāpat kā jebkurai komunikācijai, mums ir vajadzīgs producents, ziņojums un saņēmējs. Kūkas vidū ir RabbitMQ, kas būtu vieta, kur ziņa gaida saņēmēju.

Labāk sapratīsim, kā tas darbojas, zinot apmaiņas veidus, kas atspoguļo ziņojumu apmaiņu.

Apmaiņas veidi

Izmantojot apmaiņu, ikreiz, kad mēs nosūtām ziņojumu, izmantojot RabbitMQ, mēs to nenosūtām tieši uz rindu; lai citas sistēmas to izlasītu, mēs to nosūtām centrālei, kas ir atbildīga par ziņojumu pārsūtīšanu uz dažādām rindām.

Attēla kredīts: CloudAQMP

Apmaiņas veidi ir Direct, Fanout, Topic un Readers.

Tiešā apmaiņa

Pieņemsim, ka ražotājam ir jāizsniedz pirkuma apstiprinājuma ziņojums trim patērētājiem. Tas nozīmē, ka sistēmai ir jāsazinās ar trīs citām dažādām sistēmām, lai veiktu pirkumu.

Tā kā RabbitMQ ziņojumu nosūta atsevišķi katrai rindai, ir impulss, lai šīs citas sistēmas saņemtu ziņojumu tieši.

  Kā piespraust un atspraust paplašinājumus no Chrome rīkjoslas

Parasti apmaiņa pārsūta ziņojumu uz rindām, taču mēs bieži nevēlamies, lai mūsu ziņojumi tiktu nosūtīti uz visām rindām. Tāpēc ir vairāki nosacījumi, kurus varam piemērot, lai apmaiņa darbotos.

Tātad jūs varat nosūtīt savu ziņojumu tikai vienam patērētājam; tā vietā, lai nosūtītu visiem.

Saistošā atslēga: lai savienotu rindu ar apmaiņu, jums ir jāizveido saite, rindu un apmaiņu, piemēram, savienotājs.

Maršrutēšanas atslēga: šajā saitē mēs varam izveidot arī elementu, ko sauc par maršrutēšanas atslēgu, kas, citiem vārdiem sakot, ir atslēga mūsu ziņojumu pārsūtīšanai uz noteiktu rindu.

Ja jums ir maršrutēšanas atslēga X, maršrutēšanas atslēga Y un maršrutēšanas atslēga Z, ziņojums ar maršrutēšanas atslēgu Y, piemēram, iet cauri rindai Y un tiks piegādāts tieši patērētājam, kuru definējāt ziņojuma saņemšanai.

Tādā veidā mums var būt vairākas rindas, kas savienotas ar centrāli, taču tajā pašā laikā tām var būt arī dažādas attiecības ar centrālēm, izmantojot maršrutēšanas atslēgas.

Fanout Exchange

Kad ziņojums tiek nosūtīts uz centrāli, tas tiek nosūtīts uz visām ar to saistītajām rindām. Tātad, ja jums ir 10 rindas, kas ir savienotas ar fanout apmaiņu, visas rindas saņems nosūtīto ziņojumu.

Tēmu apmaiņa

Tā ir viena no elastīgākajām apmaiņas iespējām, kas ļauj sūtīt ziņas atbilstoši tēmai. Un, pamatojoties uz to, kā nosaucat maršrutēšanas atslēgas, ir iespējams izveidot noteikumu un attiecību modeļus starp sistēmām.

Piemēram: maršrutēšanas atslēga (x.*); maršrutēšanas atslēga(*.z); maršrutēšanas atslēga (*.y.*).

Kas ir AQMP programmā RabbitMQ

AMQP (Advanced Message Queuing Protocol) ir atvērts ziņojumapmaiņas protokols, ko izmanto, lai noteiktu ziņojumu pārsūtīšanu starp vairākām lietojumprogrammām. Tas ir līdzīgs HTTP un TCP protokoliem, jo ​​tas ir vadu līmeņa protokols, izņemot to, ka tas pieļauj asinhronu transportēšanu.

RabbitMQ izvēlējās ieviest AMQP vairāku iemeslu dēļ. Pirmais ir tas, ka šis protokols ir aprakstīts kā starpprogrammatūras standarts, atšķirībā no JMS, kas definē API.

Starptautisks konsorcijs, kurā ietilpst tādi lieli uzņēmumi kā Red Hat, Cisco Systems un Microsoft, uzrakstīja šo AMQP specifikāciju. Otrais ir šī protokola savietojamība, kas ļauj jebkurai lietojumprogrammai, kas ievieš AMQP, sazināties ar AMQP brokeri.

  Complete For Gmail piedāvā vārdu ieteikumus, rakstot e-pastu [Chrome]

AMQP nav vienīgais protokols, ko izmanto RabbitMQ. Tālāk esošajā attēlā ir parādīti visi RabbitMQ ieviestie un/vai atbalstītie protokoli, valodas un API.

Labākās RabbitMQ īpašības

Papildus dažādu lietojumprogrammu integrācijai, izmantojot ziņojumus asinhroni un no dažādām vietām, RabbitMQ piedāvā arī citas funkcijas, kas ir padarījušas to ļoti populāru ziņojumapmaiņas brokeru pasaulē:

Uzticama krātuve

RabbitMQ ietver vairākas funkcijas, kas ļauj garantēt ziņojumu piegādi. Tostarp tas nodrošina glabāšanu, kad neviens patērētājs nevar saņemt ziņojumu. Tas ļauj patērētājiem pieņemt ziņojuma piegādi, lai nodrošinātu, ka tas ir veiksmīgi apstrādāts.

Ja apstrāde neizdodas, RabbitMQ ļauj ziņojumu atkārtoti ievietot rindā, lai to patērētu cits patērētāja gadījums vai to vēlreiz apstrādātu tas pats patērētājs, kuram sākotnēji neizdevās, kad tas atkopjas.

RabbitMQ arī garantē ziņojumu piegādes secību; tas ir, tie tiek patērēti tādā pašā secībā, kādā tie ieradās RabbitMQ rindās.

Klasteru veidošana

Lai gan RabbitMQ nodrošina lielisku veiktspēju, apstrādājot tūkstošiem ziņojumu sekundē, dažreiz tai ir jāspēj apstrādāt lielāks skaits ziņojumu, neietekmējot lietojumprogrammas veiktspēju.

Šim nolūkam RabbitMQ ļauj izveidot klasterus, lai horizontāli mērogotu risinājumu, kas ir pārredzams gan ražotājiem, gan patērētājiem.

Ļoti pieejamas rindas

Programmā RabbitMQ rindas var replicēt vairākos klastera mezglos, nodrošinot, ka mezgla kļūmes vai dīkstāves gadījumā brokeris var turpināt saņemt ziņojumus no ražotājiem un piegādāt tos attiecīgajiem patērētājiem.

Elastīga maršrutēšana

Programmā RabbitMQ var definēt elastīgus maršrutēšanas noteikumus, pat ievērojot noteiktu modeli, lai maršrutētu ziņojumus starp apmaiņu un rindām, izmantojot saistījumus.

Vairāku protokolu atbalsts

Papildus AMQP protokola atbalstam RabbitMQ atbalsta STOMP, MQTT un HTTP, izmantojot spraudņus. Tas ietver arī katra brokera komponenta autentifikācijas un piekļuves kontroles mehānismus.

RabbitMQ reāli lietošanas gadījumi

Vissvarīgākie RabbitMQ lietošanas gadījumi ir iespēja nodrošināt asinhronitāti starp lietojumprogrammām, samazināt savienojumu starp lietojumprogrammām, izplatīt brīdinājumus un kontrolēt darbu rindu fonā.

Tomēr RabbitMQ praktiskie lietošanas gadījumi ir e-komercijā, kur t izmanto, lai manipulētu, apstrādātu un pārsūtītu jūsu pārdošanas pasūtījumus uz citu nozaru sistēmām, piemēram, izplatīšanu un rēķinu izrakstīšanu.

Apstrādājot pasūtījumus, varat pārsūtīt savu pārdošanas ziņojumu uz izplatīšanas centru un rēķinu apgabalu. Šajā shēmā viss darbojas horizontāli, ievērojot asinhrono ziņojumu sūtīšanas shēmu, taču bieži vien ir iespējams nosūtīt darbību vairākām rindām.

  Kā Apple 2020. gada iPad Pro tiek salīdzināts ar 1994. gada skārienpaliktņa Mac

Pēc iepriekšējā piemēra šī funkcija var būt ļoti noderīga, ja klients veic pirkumu un prece ir jāsagatavo izplatīšanai, transportēšanai un rēķiniem.

Un tā kā katrs no šiem sektoriem ir atšķirīga sistēma, RabbitMQ mērķis ir pārsūtīt visus šos ziņojumus uz attiecīgajām sistēmām.

Rabbit MQ alternatīvas:

RabbitMQ ir daudz vienkāršāks, nekā izskatās, un tam ir vairākas alternatīvas, tostarp:

#1. IronMQ

IronMQ ir īpaši ātra ziņojumu rindas programmatūra. Tas ir ļoti pieejams, izturīgs pēc dizaina un vēlams vienreizējai piegādei. IronMQ ir jaudīgākais mākoņdatošanas risinājums mūsdienu lietojumprogrammu arhitektūrai.

Tā atbalsta push rindas, pull rindas un garas aptaujas, kas saglabā aptauju pieprasījumus atvērtus ilgāk. Turklāt tas var izmantot vairākus augstas pieejamības datu centrus, kas atvieglo mērogojamību.

Varat izvietot mākonī, koplietotā vai speciālā aparatūrā vai lokālā vietā. Tajā ir arī vairākas klientu bibliotēkas ar viegli lasāmu dokumentāciju.

#2. Apache Kafka

Kafka ir platforma ar spēcīgu klātbūtni izplatītajā notikumu straumēšanā. Kafka pamatā ir replicēts, izplatīts, pastāvīgs izpildes žurnāls.

Tā vislielākā lietojamība ir uz notikumiem balstītos barošanas mikropakalpojumos vai lielapjoma straumēšanas lietojumprogrammās, automātiski asinhroni atkārtojot notikumus klasterī, lai nodrošinātu kļūdu toleranci un augstu pieejamību.

#3. Apache ActiveMQ

ActiveMQ ir uz Java balstīts vairāku protokolu ziņojumu brokeris. Ar to mēs varam integrēt lietojumprogrammas, izmantojot AMQP ziņojumu rindas protokolu lietojumprogrammu slānī.

Tā ievieš vairākus integrācijas protokolus, piemēram, JMS (vietējā Java) un Stomp (ko var izmantot PHP lietojumprogrammas), cita starpā.

Turklāt Amazon ir sava “pārvaldītā” versija ar nosaukumu Amazon MQ, kas ievērojami atvieglo pakalpojuma lietošanu.

Nobeiguma vārdi

Ziņapmaiņas brokeri tradicionāli ir bijuši svarīgs elements organizāciju arhitektūrā. Tomēr, pieaugot lietotāju skaitam, kas ienāk uzņēmuma sistēmās, izmantojot dažādus kanālus, ir nepieciešami produkti, kas ļauj tos mērogot horizontāli par zemām izmaksām. Ļauj apstrādāt lielu skaitu ziņojumu sekundē.

Šeit jaunās paaudzes brokeri, piemēram, RabbitMQ, kļūst aktuālāki mūsdienu lietojumprogrammās, kuru mērķis ir piedāvāt mūsu klientiem augstu pieejamības, uzticamības, savietojamības un veiktspējas līmeni.

Varat arī izpētīt dažas uzticamas RabbitMQ mitināšanas platformas savai lietojumprogrammai.