Volba mezi službami zasílání zpráv Azure – Event Grid, Event Hubs a Service Bus

Azure nabízí tři služby, které pomáhají s doručováním událostí nebo zpráv v celém řešení. Tyto služby jsou: Azure Event Grid, Azure Event Hubs, Azure Service Bus.

I když se tyto služby v mnohém podobají, každá z nich je navržená pro určité situace. Tento článek vysvětluje rozdíly mezi nimi a pomůže vám pochopit, kterou službu si máte pro svoji aplikaci vybrat. V mnoha případech se služby zasílání zpráv vzájemně doplňují a dají se použít společně.

Události vs. zprávy

Mezi službami, které doručí událost, a službami, které doručí zprávu, je důležité rozlišovat.

Událost

Událost je odlehčené oznámení o stavu nebo změně stavu. Vydavatel události nemá žádné očekávání ohledně toho, jak se má událost zpracovat. Příjemce události se rozhodne, jak s oznámením naložit. Události můžou být samostatné jednotky nebo můžou být součástí řady.

Diskrétní události se mění ve stavu a jsou použitelné. Pokud chce příjemce přejít k dalšímu kroku, stačí mu jenom vědět, že se něco stalo. Data události obsahují informace o tom, co se stalo, ale neobsahují data, která událost aktivovala. Událost třeba příjemcům oznamuje, že došlo k vytvoření souboru. Může mít obecné informace o souboru, ale soubor samotný nemá. Samostatné události jsou ideální pro řešení bez serveru, která vyžadují škálování.

Řada událostí hlásí podmínku a je možné ji analyzovat. Události jsou seřazené podle času a vzájemně provázané. Pokud chcete příjemce analyzovat, co se stalo, potřebuje sekvenční řadu událostí.

Zpráva

Zprávu tvoří nezpracovaná data vytvořená určitou službou, která se mají spotřebovat nebo uložit na jiném místě. Zpráva obsahuje data, která aktivovala kanál zprávy. Vydavatel zprávy má určitá očekávání ohledně toho, jak příjemce zprávu zpracuje. Mezi oběma stranami existuje dohoda. Vydavatel třeba odešle zprávu s nezpracovanými daty a očekává, že příjemce vytvoří z těchto dat soubor a po dokončení práce odešle odpověď.

Teď si rychle projdeme, co jsou Azure Event Grid, Azure Event Hubs a Azure Service Bus.

Azure Event Grid

Azure Event Grid je vysoce škálovatelná plně spravovaná služba distribuce zpráv Pub Sub, která nabízí flexibilní vzory spotřeby zpráv pomocí protokolů MQTT (Message Queueing Telemetry Transport) a HTTP. Pomocí Služby Azure Event Grid můžete vytvářet datové kanály s daty zařízení, integrovat aplikace a vytvářet bezserverové architektury řízené událostmi.

Služba poskytuje páteřní síť událostí, která umožňuje programování řízené událostmi a reaktivní programování. Používá model publikování a odběru. Vydavatelé generují události, ale nemají žádné očekávání ohledně způsobu zpracování událostí. Odběratelé se rozhodnou, které události chtějí zpracovat.

Event Grid je hluboce integrovaný s dalšími službami Azure a dá se integrovat se službami třetích stran. To zjednodušuje příjem událostí a snižuje náklady, protože není potřeba neustále provádět dotazování. Event Grid efektivně a spolehlivě směruje události z prostředků Azure i mimo Azure. Distribuuje události do registrovaných koncových bodů odběratelů. Zpráva události obsahuje informace, které potřebujete, abyste mohli reagovat na změny ve službách a aplikacích.

Má následující vlastnosti:

  • Dynamicky škálovatelné
  • Nízké náklady
  • Bezserverová architektura
  • Alespoň jednou doručení události

Event Grid se nabízí ve dvou edicích: Azure Event Grid, plně spravovaná služba PaaS v Azure a Event Grid v Kubernetes s Azure Arc, která umožňuje používat Event Grid v clusteru Kubernetes všude, kde je nasazený, místně nebo v cloudu. Další informace najdete v tématu Přehled služby Azure Event Grid a Event Grid v Kubernetes s přehledem služby Azure Arc.

Azure Event Hubs

Azure Event Hubs je platforma pro streamování velkých objemů dat a služba pro příjem událostí. Dokáže přijímat a zpracovávat miliony událostí za sekundu. Usnadňuje zachytávání, uchovávání a přehrávání streamovaných telemetrických dat a dat událostí. Data můžou pocházet z mnoha souběžných zdrojů. Služba Event Hubs umožňuje zpřístupnění telemetrických dat a dat událostí různým infrastrukturám zpracování datových proudů a analytickým službám. Je k dispozici buď jako datové proudy, nebo jako dávky událostí v balíčku. Tato služba poskytuje jedno řešení, které umožňuje rychlé načítání dat pro zpracování v reálném čase a opakované přehrání uložených nezpracovaných dat. Může zachytávat streamovaná data do souboru, který umožňuje další zpracování a analýzu.

Má následující vlastnosti:

  • Nízká latence
  • Může přijímat a zpracovávat miliony událostí za sekundu.
  • Alespoň jednou doručení události

Další informace najdete v tématu Přehled služby Event Hubs.

Azure Service Bus

Service Bus je plně spravovaný podnikový zprostředkovatel zpráv s frontami zpráv a tématy publikování a odběrem. Služba je určená pro podnikové aplikace, které vyžadují transakce, řazení, detekci duplicit a okamžitou konzistenci. Service Bus umožňuje nativním cloudovým aplikacím poskytovat spolehlivou správu přechodů mezi stavy pro obchodní procesy. Při zpracování zpráv s vysokou hodnotou, které nelze ztratit nebo duplikovat, použijte Azure Service Bus. Tato služba také usnadňuje vysoce zabezpečenou komunikaci mezi hybridními cloudovými řešeními a může propojit stávající místní systémy s cloudovými řešeními.

Service Bus je zprostředkovaný systém zasílání zpráv. Ukládá zprávy do „zprostředkovatele“ (třeba fronty), dokud není přijímající strana připravená zprávy přijmout. Má následující vlastnosti:

  • Spolehlivé asynchronní doručování zpráv (podnikové zasílání zpráv jako služba), které vyžaduje dotazování. Pokud používáte Service Bus a potřebujete přijímat zprávy, aniž byste museli dotazovat frontu, můžete ji dosáhnout pomocí dlouhé operace příjmu dotazování pomocí protokolů založených na protokolu TCP, které Service Bus podporuje.
  • Pokročilé funkce zasílání zpráv, jako je FIFO (first-in a first-out), dávkování/relace, transakce, nedoručené dopisy, dočasné řízení, směrování a filtrování a duplicitní detekce
  • Alespoň jednou doručení zprávy
  • Volitelné seřazené doručování zpráv

Další informace najdete v tématu Přehled služby Service Bus.

Porovnání služeb

Následující tabulka porovnává tři služby: Event Grid, Event Hubs a Service Bus.

Služba Účel Typ Vhodné použití služby
Event Grid Reaktivní programování Distribuce událostí (diskrétní události) Reakce na změny stavu
Event Hubs Kanál pro velké objemy dat Streamování událostí (řady) Streamování telemetrických a distribuovaných dat
Service Bus Zasílání podnikových zpráv s vysokou hodnotou Zpráva Zpracování objednávek a finanční transakce

Použití služeb v kombinaci

V některých případech používáte služby současně k plnění různých úkolů. Web elektronického obchodování může například pomocí služby Service Bus zpracovávat objednávku, Event Hubs zachytávat telemetrii webu a Event Grid, aby reagoval na události, jako je položka, byla odeslána.

V jiných případech služby vzájemně propojíte do kanálu událostí a dat. Event Grid slouží k reagování na události v jiných službách. Příklad použití služby Event Grid se službou Event Hubs k migraci dat do Azure Synapse Analytics najdete v tématu Streamování velkých objemů dat do Azure Synapse Analytics. Následující obrázek ukazuje pracovní postup pro streamování dat.

Diagram znázorňující, jak je možné propojit event Hubs, Service Bus a Event Grid

Podívejte se na následující články: