RabbitMQ magyarázata 5 perc vagy kevesebb

Ma látni fogjuk, hogyan lehet felgyorsítani oldalai betöltési idejét a legnehezebb feldolgozás aszinkron végrehajtásával, mindezt nagyon egyszerűen, a RabbitMQ-nak köszönhetően.

Egy alkalmazás vagy webhely stabilitása és sebessége minden bizonnyal a legfontosabb tényezők közé tartozik a felhasználók számára. Ki soha nem hagyta el a webhelyet, mielőtt meglátta volna az első oldalt, mert túl sokáig tartott?

Mi az a RabbitMQ

A RabbitMQ egy nyílt forráskódú, elosztott és méretezhető üzenetküldő közvetítő, amely közvetítőként szolgál a termelők és a fogyasztók közötti hatékony kommunikációhoz.

A RabbitMQ az AMQP alkalmazási rétegű üzenetküldő protokollt valósítja meg, amely az aszinkron üzenetek kézbesítési garanciával történő kommunikálására összpontosít, az üzenetek közvetítőtől a termelőnek, illetve a fogyasztóktól a termelő felé történő beérkezésének visszaigazolásán keresztül.

Hogyan működik a RabbitHQ

Egyszerűsített módon a RabbitMQ sorokat definiál, amelyek addig tárolják a gyártók által küldött üzeneteket, amíg a fogyasztó alkalmazások meg nem kapják és feldolgozzák az üzenetet. Lehetővé teszi olyan elosztott rendszerek tervezését és megvalósítását, amelyekben egy rendszer független modulokra van felosztva, amelyek üzeneteken keresztül kommunikálnak egymással.

Mint minden kommunikációnak, nekünk is szükségünk van producerre, üzenetre és vevőre. A torta közepén a RabbitMQ található, ez lenne az a hely, ahol az üzenet várja a vevőt.

Jobban megérthetjük, hogyan működik, ha ismerjük az üzenetváltást reprezentáló cseretípusokat.

Cseretípusok

Cseréken keresztül, amikor üzenetet küldünk a RabbitMQ-n keresztül, nem küldjük közvetlenül egy sorba; hogy más rendszerek is elolvashassák, elküldjük egy központnak, amely felelős az üzenetek továbbításáért a különböző sorokba.

Kép jóváírása: CloudAQMP

A cseretípusok: Közvetlen, Fanout, Téma és Olvasók.

Közvetlen csere

Tegyük fel, hogy egy gyártónak három fogyasztónak kell kiadnia egy vásárlást megerősítő üzenetet. Vagyis a rendszernek három másik különböző rendszerrel kell kommunikálnia a vásárláshoz.

Mivel a RabbitMQ külön küldi el az üzenetet minden egyes sorba, lendület van ahhoz, hogy ezek a többi rendszer közvetlenül fogadja az üzenetet.

  Weboldal kapcsolatfelvételi űrlap létrehozása a Google Forms segítségével

Általában a központ továbbítja az üzenetet a soroknak, de gyakran nem akarjuk, hogy az üzeneteink az összes sorba kerüljenek. Ezért több feltételt is alkalmazhatunk, hogy a csere sikeres legyen.

Így üzenetét csak egy fogyasztónak küldheti el; ahelyett, hogy mindenkinek elküldték volna.

Binding Key: Ahhoz, hogy egy sort a központhoz csatlakoztasson, létre kell hoznia egy kötést, egy kapcsolatot a sor és a csere között, például egy összekötőt.

Routing Key: Ebben a bindben létrehozhatunk egy routing key nevű elemet is, amely más szóval egy kulcs arra, hogy üzeneteinket egy adott sorba továbbítsuk.

Ha rendelkezik X útválasztó kulcstal, Y útválasztókulccsal és Z útválasztókulccsal, az Y útválasztó kulccsal rendelkező üzenet például átmegy az Y soron, és közvetlenül az üzenet fogadására meghatározott fogyasztóhoz kerül.

Így több sor is kapcsolódhat egy központhoz, ugyanakkor ezek az útválasztó kulcsokat használó központokkal is eltérő kapcsolatban lehetnek.

Fanout Exchange

Amikor az üzenetet elküldik a központnak, akkor elküldik a hozzá kapcsolódó összes sorba. Tehát ha 10 sor csatlakozik egy fanout cseréhez, akkor az összes sor megkapja az elküldött üzenetet.

Témacsere

Ez az egyik legrugalmasabb csere, amely lehetővé teszi, hogy tárgynak megfelelően küldjünk üzeneteket. Az útválasztási kulcsok elnevezése alapján pedig szabálymintákat és kapcsolatokat lehet létrehozni a rendszerek között.

Például: útválasztó kulcs (x.*); útválasztó kulcs(*.z); útválasztó kulcs (*.y.*).

Mi az AQMP a RabbitMQ-ban

Az AMQP (Advanced Message Queuing Protocol – Advanced Message Queuing Protocol) egy nyílt üzenetkezelési protokoll, amelyet az üzenetek több alkalmazás közötti átvitelének meghatározására használnak. Hasonló a HTTP- és TCP-protokollokhoz, mivel vezetékes szintű protokoll, kivéve, hogy lehetővé teszi az aszinkron szállítást.

A RabbitMQ több okból is az AMQP megvalósítása mellett döntött. Az első az, hogy ezt a protokollt a köztes szoftver szabványaként írják le, ellentétben a JMS-szel, amely API-t határoz meg.

Egy nemzetközi konzorcium, amelybe olyan nagyvállalatok tartoznak, mint a Red Hat, a Cisco Systems és a Microsoft, írta ezt az AMQP specifikációt. A második a protokoll interoperabilitása, amely lehetővé teszi az AMQP-t megvalósító bármely alkalmazás számára, hogy kommunikáljon egy AMQP-brókerrel.

  Hogyan lehet megtudni, hogy ki nem követett téged a Twitteren

Az AMQP nem az egyetlen protokoll, amelyet a RabbitMQ használ. Az alábbi kép a RabbitMQ által megvalósított és/vagy támogatott összes protokollt, nyelvet és API-t ábrázolja.

A RabbitMQ legjobb tulajdonságai

Amellett, hogy lehetővé teszi a különböző alkalmazások aszinkron és különböző helyekről érkező üzenetekkel történő integrációját, a RabbitMQ további funkciókat is kínál, amelyek nagyon népszerűvé tették az üzenetküldő brókerek világában:

Megbízható tárolás

A RabbitMQ számos olyan funkciót tartalmaz, amelyek lehetővé teszik az üzenetek kézbesítését. Ezek között tárhelyet biztosít, amikor a fogyasztók nem tudják fogadni az üzenetet. Lehetővé teszi a fogyasztók számára, hogy elfogadják az üzenet kézbesítését, hogy biztosítsák az üzenet sikeres feldolgozását.

Ha a feldolgozás sikertelen, a RabbitMQ lehetővé teszi, hogy az üzenetet újra sorba állítsa, hogy a fogyasztó egy másik példánya felhasználja, vagy újra feldolgozza ugyanazt a fogyasztót, aki eredetileg meghiúsult, amikor helyreállt.

A RabbitMQ az üzenetek kézbesítési sorrendjét is garantálja; vagyis abban a sorrendben fogyasztják el őket, ahogyan a RabbitMQ soraiba érkeztek.

Klaszterek létrehozása

Bár a RabbitMQ nagyszerű teljesítményt nyújt azáltal, hogy több ezer üzenetet dolgoz fel másodpercenként, néha nagyobb számú üzenetet kell feldolgoznia anélkül, hogy az alkalmazás teljesítményét befolyásolná.

Ehhez a RabbitMQ lehetővé teszi klaszterek létrehozását a megoldás horizontális méretezése érdekében, ami átlátható a gyártók és a fogyasztók számára egyaránt.

Rendkívül elérhető sorok

A RabbitMQ-ban a várólisták replikálhatók egy fürt több csomópontja között, biztosítva, hogy csomóponthiba vagy leállás esetén a bróker továbbra is megkapja az üzeneteket a gyártóktól, és eljuttassa azokat a megfelelő fogyasztókhoz.

Rugalmas útválasztás

A RabbitMQ-ban rugalmas útválasztási szabályok definiálhatók, még egy bizonyos mintát követve is, hogy az üzeneteket kötéseken keresztül irányítsák a központok és a sorok között.

Több protokoll támogatása

Az AMQP protokoll támogatása mellett a RabbitMQ támogatja a STOMP, MQTT és HTTP bővítményeket is. Tartalmaz továbbá hitelesítési és hozzáférés-ellenőrzési mechanizmusokat az egyes brókerkomponensekhez.

A RabbitMQ valós használati esetei

A RabbitMQ legfontosabb felhasználási esetei az alkalmazások közötti aszinkronitás garantálása, az alkalmazások közötti csatolás csökkentése, a riasztások elosztása és a háttérben lévő jobok sorának szabályozása.

A RabbitMQ gyakorlati felhasználási esetei azonban az e-kereskedelemben találhatók, ahol a t az értékesítési rendelések manipulálására, feldolgozására és más szektorok rendszereibe való továbbítására szolgál, mint például a terjesztés és a számlák kiállítása.

  Saját webhely létrehozása egyszerű módon

A rendelések feldolgozása során értékesítési üzenetét továbbíthatja az elosztóközpontba és egy számlaterületre. Ebben a sémában minden vízszintesen működik, az üzenetküldés aszinkron mintáját követve, de gyakran lehetséges egy műveletet több sorba küldeni.

Az előző példát követve ez a funkció nagyon hasznos lehet, amikor a vásárló vásárol, és a terméket fel kell készíteni disztribúcióra, szállításra, számlázásra.

És mivel ezek a szektorok mindegyike más rendszer, a RabbitMQ célja, hogy ezeket az üzeneteket továbbítsa a megfelelő rendszereknek.

Rabbit MQ alternatívák:

A RabbitMQ sokkal egyszerűbb, mint amilyennek látszik, és számos alternatíva létezik, amelyek közé tartozik:

#1. IronMQ

Az IronMQ egy szupergyors üzenetsoroló szoftver. Rendkívül elérhető, tartós kialakítású, és lehetőleg egyszeri szállításra alkalmas. Az IronMQ a legerősebb felhőalapú megoldás a modern alkalmazásarchitektúrához.

Támogatja a leküldési, lehívási sorokat és a hosszú lekérdezéseket, ami hosszabb ideig nyitva tartja a szavazási kérelmeket. Ezenkívül több magas rendelkezésre állású adatközpontot is használhat, ami megkönnyíti a méretezhetőséget.

Telepítheti a felhőben, megosztott vagy dedikált hardveren vagy a helyszínen. Ezenkívül számos kliens könyvtárral rendelkezik, könnyen olvasható dokumentációval.

#2. Apache Kafka

A Kafka egy olyan platform, amely erősen jelen van az elosztott események közvetítésében. Lényegében a Kafka replikált, elosztott, állandó végrehajtási naplóként készült.

Legnagyobb használhatósága eseményvezérelt tápellátású mikroszolgáltatások vagy nagyméretű adatfolyam-feldolgozó alkalmazások, amelyek automatikusan aszinkron módon replikálják az eseményeket a fürtön belül a hibatűrés és a magas rendelkezésre állás érdekében.

#3. Apache ActiveMQ

Az ActiveMQ egy Java-alapú többprotokollos üzenetközvetítő. Ezzel az alkalmazási rétegben AMQP üzenetsorolási protokollt használó alkalmazásokat integrálhatunk.

Több protokollt valósít meg az integrációhoz, mint például a JMS (natív Java) és a Stomp (amelyet PHP-alkalmazások használhatnak), többek között.

Ráadásul az Amazonnak megvan a „menedzselt” változata, az Amazon MQ, ami jelentősen megkönnyíti a szolgáltatás használatát.

Végső szavak

Az üzenetküldő brókerek hagyományosan fontos szerepet töltenek be a szervezetek architektúrájában. Mégis, a különböző csatornákon keresztül belépő felhasználók számának növekedésével olyan termékekre van szükség, amelyek lehetővé teszik a vízszintes méretezést alacsony költséggel. Lehetővé teszi másodpercenként nagy számú üzenet feldolgozását.

Ez az a hely, ahol a brókerek új generációja, mint például a RabbitMQ, egyre relevánsabb a modern alkalmazásokban, amelyek magas szintű rendelkezésre állást, megbízhatóságot, interoperabilitást és teljesítményt kívánnak kínálni ügyfeleink számára.

Felfedezhet néhány megbízható RabbitMQ hosting platformot is az alkalmazásához.