RabbitMQ vysvětleno za 5 minut nebo méně

Dnes se podíváme, jak zrychlit dobu načítání vašich stránek tím, že nejtěžší zpracování provedete asynchronně, vše zvládnete velmi jednoduše díky RabbitMQ.

Mezi nejdůležitější faktory pro uživatele jistě patří stabilita a rychlost aplikace nebo webu. Kdo nikdy neopustil web, aniž by viděl první stránku, protože to trvalo příliš dlouho?

Co je RabbitMQ

RabbitMQ je open-source, distribuovaný a škálovatelný zprostředkovatel zpráv, který slouží jako prostředník pro efektivní komunikaci mezi výrobci a spotřebiteli.

RabbitMQ implementuje protokol zasílání zpráv aplikační vrstvy AMQP, který je zaměřen na komunikaci asynchronních zpráv s garancí doručení prostřednictvím potvrzení o přijetí zpráv od brokera k producentovi a od spotřebitelů k producentovi.

Jak RabbitHQ funguje

Zjednodušeně RabbitMQ definuje fronty, které budou ukládat zprávy odeslané producenty, dokud konzumující aplikace zprávu nedostanou a nezpracují. Umožňuje nám navrhovat a implementovat distribuované systémy, ve kterých je systém rozdělen na nezávislé moduly, které spolu komunikují prostřednictvím zpráv.

Jako každá komunikace potřebujeme producenta, zprávu a příjemce. Uprostřed dortu je RabbitMQ, což by bylo místo, kde zpráva čeká na příjemce.

Pojďme lépe pochopit, jak to funguje, když budeme znát typy výměn reprezentujících výměnu zpráv.

Typy výměn

Prostřednictvím výměn, kdykoli posíláme zprávu přes RabbitMQ, neposíláme ji přímo do fronty; aby si ji přečetly jiné systémy, pošleme ji do ústředny, která je zodpovědná za přeposílání zpráv do různých front.

Obrazový kredit: CloudAQMP

Typy výměn jsou Direct, Fanout, Topic a Readers.

Přímá výměna

Předpokládejme, že výrobce potřebuje vydat zprávu s potvrzením nákupu třem spotřebitelům. To znamená, že systém potřebuje k nákupu komunikovat s dalšími třemi různými systémy.

Protože RabbitMQ posílá zprávu odděleně do každé fronty, existuje hybná síla, aby tyto ostatní systémy přijímaly zprávu přímo.

  Jak se připojit k lovu vajec „Animal Crossing: New Horizons“

Normálně ústředna přepošle zprávu do front, ale často nechceme, aby naše zprávy byly odeslány do všech front. Proto existuje několik podmínek, které můžeme použít, aby výměna fungovala.

Můžete si tedy nechat poslat zprávu pouze jednomu spotřebiteli; místo toho, aby byla poslána všem.

Klíč vazby: Chcete-li připojit frontu k burze, musíte vytvořit vazbu, vztah mezi frontou a burzou, jako je konektor.

Směrovací klíč: V této vazbě můžeme také vytvořit prvek zvaný směrovací klíč, což je jinými slovy klíč k předávání našich zpráv do konkrétní fronty.

Pokud máte směrovací klíč X, směrovací klíč Y a směrovací klíč Z, zpráva se směrovacím klíčem Y, například, projde frontou Y a bude doručena přímo spotřebiteli, kterého jste definovali pro přijetí zprávy.

Tímto způsobem můžeme mít k ústředně připojeno několik front, ale zároveň mohou mít různé vztahy s ústřednami pomocí směrovacích klíčů.

Výměna Fanout

Když je zpráva odeslána na ústřednu, je odeslána do všech front k ní připojených. Pokud tedy máte 10 front připojených k výměně fanout, všechny fronty obdrží zprávu, která byla odeslána.

Výměna témat

Je to jedna z nejflexibilnějších výměn, která nám umožňuje posílat zprávy podle předmětu. A na základě toho, jak pojmenujete směrovací klíče, je možné vytvářet vzory pravidel a vztahů mezi systémy.

Například: směrovací klíč (x.*); směrovací klíč(*.z); směrovací klíč (*.y.*).

Co je AQMP v RabbitMQ

AMQP (Advanced Message Queuing Protocol) je otevřený protokol pro zasílání zpráv používaný k definování přenosu zpráv mezi více aplikacemi. Je podobný protokolům HTTP a TCP v tom, že jde o protokol na drátové úrovni, kromě toho, že umožňuje asynchronní přenos.

RabbitMQ se rozhodl implementovat AMQP z několika důvodů. První je, že tento protokol je popsán jako standard pro middleware, na rozdíl od JMS, který definuje API.

Tuto specifikaci AMQP napsalo mezinárodní konsorcium zahrnující velké společnosti jako Red Hat, Cisco Systems a Microsoft. Druhým je interoperabilita tohoto protokolu, která umožňuje jakékoli aplikaci implementující AMQP komunikovat s AMQP brokerem.

  Jak zabránit tomu, aby vaše domovská stránka Google zaznamenávala všechny vaše konverzace

AMQP není jediný protokol používaný RabbitMQ. Obrázek níže představuje všechny protokoly, jazyky a API implementované a/nebo podporované RabbitMQ.

Nejlepší vlastnosti RabbitMQ

Kromě toho, že umožňuje integraci různých aplikací prostřednictvím zpráv asynchronně a z různých míst, RabbitMQ nám nabízí další funkce, díky kterým je velmi populární ve světě zprostředkovatelů zpráv:

Spolehlivé úložiště

RabbitMQ obsahuje několik funkcí, které mu umožňují zaručit doručení zpráv. Mezi nimi poskytuje úložiště, když žádní spotřebitelé nemohou zprávu přijmout. Umožňuje spotřebitelům přijmout doručení zprávy, aby bylo zajištěno, že byla úspěšně zpracována.

Pokud se zpracování nezdaří, RabbitMQ umožňuje, aby byla zpráva znovu zařazena do fronty, aby byla spotřebována jinou instancí spotřebitele nebo aby byla znovu zpracována stejným spotřebitelem, který původně selhal, když se obnoví.

RabbitMQ také garantuje pořadí doručení zpráv; to znamená, že jsou konzumovány ve stejném pořadí, v jakém dorazily do fronty RabbitMQ.

Vytváření shluků

Přestože RabbitMQ poskytuje skvělý výkon zpracováním tisíců zpráv za sekundu, někdy potřebuje být schopen zpracovat větší počet zpráv, aniž by to ovlivnilo výkon aplikace.

Za tímto účelem umožňuje RabbitMQ vytvářet shluky pro horizontální škálování řešení, což je transparentní pro výrobce i spotřebitele.

Vysoce dostupné fronty

V RabbitMQ mohou být fronty replikovány přes více uzlů v clusteru, což zajišťuje, že v případě selhání uzlu nebo výpadku může broker nadále přijímat zprávy od výrobců a doručovat je příslušným spotřebitelům.

Flexibilní směrování

V RabbitMQ lze definovat flexibilní pravidla směrování, a to i podle určitého vzoru, pro směrování zpráv mezi výměnami a frontami prostřednictvím vazeb.

Podpora více protokolů

Kromě podpory protokolu AMQP podporuje RabbitMQ prostřednictvím pluginů STOMP, MQTT a HTTP. Zahrnuje také mechanismy ověřování a řízení přístupu pro komponenty každého brokera.

Skutečné případy použití RabbitMQ

Nejdůležitější případy použití RabbitMQ umožňují záruku asynchronicity mezi aplikacemi, snížení vazby mezi aplikacemi, distribuci výstrah a řízení fronty úloh na pozadí.

Praktické případy použití RabbitMQ jsou však v eCommerce, kde se t používá k manipulaci, zpracování a předávání vašich prodejních objednávek systémům v jiných sektorech, jako je distribuce a vystavování faktur.

  9 nejlepších nástrojů pro analýzu textu a těžbu, které by firmy měly vyzkoušet

Při zpracování objednávek můžete předat prodejní zprávu do distribučního centra a oblasti faktur. V tomto schématu vše funguje horizontálně podle asynchronního vzoru pro odesílání zpráv, ale často je možné poslat akci do několika front.

Podle předchozího příkladu může být tato funkce velmi užitečná, když zákazník nakupuje a produkt potřebuje připravit na distribuci, přepravu a faktury.

A protože každý z těchto sektorů je jiný systém, cílem RabbitMQ je předávat všechny tyto zprávy odpovídajícím systémům.

Alternativy Rabbit MQ:

RabbitMQ je mnohem jednodušší, než vypadá, a existuje několik alternativ, které zahrnují:

#1. IronMQ

IronMQ je superrychlý software pro řazení zpráv. Je vysoce dostupný, odolný v designu a nejlépe pro jednorázové dodání. IronMQ je nejvýkonnější cloudové nativní řešení pro moderní aplikační architekturu.

Podporuje push fronty, pull fronty a dlouhé dotazování, které udrží požadavky na dotaz otevřené déle. Navíc může využívat více datových center s vysokou dostupností, což usnadňuje škálovatelnost.

Můžete nasadit v cloudu, na sdíleném nebo vyhrazeném hardwaru nebo lokálně. Má také řadu klientských knihoven se snadno čitelnou dokumentací.

#2. Apache Kafka

Kafka je platforma se silným zastoupením v distribuovaném streamování událostí. Ve svém jádru je Kafka navržena jako replikovaný, distribuovaný a trvalý protokol odevzdání.

Jeho největší použitelnost je pro výkonové mikroslužby řízené událostmi nebo aplikace pro zpracování velkých proudů, které automaticky asynchronně replikují události v rámci clusteru, aby byly odolné proti chybám a vysoké dostupnosti.

#3. Apache ActiveMQ

ActiveMQ je multiprotokolový Message Broker založený na Javě. S ním můžeme integrovat aplikace využívající protokol AMQP pro řazení zpráv na aplikační vrstvě.

Implementuje několik protokolů pro integraci, jako jsou mimo jiné JMS (nativní Java) a Stomp (které mohou používat aplikace PHP).

Kromě toho má Amazon svou „spravovanou“ verzi nazvanou Amazon MQ, která výrazně usnadňuje používání služby.

Závěrečná slova

Zprostředkovatelé zpráv jsou tradičně důležitou součástí architektury organizací. S rostoucím počtem uživatelů vstupujících do podnikových systémů různými kanály jsou však zapotřebí produkty, které umožňují horizontální škálování s nízkými náklady. Umožňuje zpracování velkého počtu zpráv za sekundu.

To je místo, kde se nová generace brokerů, jako je RabbitMQ, stává relevantnější v moderních aplikacích, které se snaží našim klientům nabídnout vysokou úroveň dostupnosti, spolehlivosti, interoperability a výkonu.

Můžete také prozkoumat některé spolehlivé hostingové platformy RabbitMQ pro vaši aplikaci.