Volba platformy pro zasílání zpráv
K dispozici je mnoho komunikačních platforem, které pomáhají zlepšit spolehlivost distribuované aplikace, včetně několika v Microsoft Azure. Každá platforma je nástroj, který slouží jinému účelu. Je důležité zvolit správný nástroj pro každý požadavek ve vaší aplikaci. Podívejte se na možnosti ve službě Azure Service Bus.
Navrhované řazení a sledování distribuované architektury aplikace Contoso Bicycles vyžaduje několik komponent, včetně webu, úložiště dat a back-endové služby. Komponenty aplikace můžete svázat mnoha různými způsoby a jedna aplikace může využívat více technik.
Musíte se rozhodnout, které techniky použít v nové aplikaci Contoso Bicycles. Prvním krokem je vyhodnotit každé místo, kde probíhá komunikace mezi více částmi. Některé komponenty musí běžet včas, aby vaše aplikace dělala svou úlohu vůbec. Některé můžou být důležité, ale ne časově kritické. A konečně další komponenty, jako jsou oznámení mobilních aplikací, jsou trochu volitelné.
Rozhodnutí mezi zprávami a událostmi
Zprávy i události jsou datagramy: balíčky dat odesílaných z jedné komponenty do druhé. Jsou různé způsoby, jak se zpočátku zdají být drobné, ale rozdíly můžou výrazně lišit v tom, jak svou aplikaci vytvoříte.
Zprávy
V terminologii distribuovaných aplikací se definující charakteristika zprávy spočívá v tom, že celková integrita aplikace může záviset na přijatých zprávách. Odeslání zprávy si můžete představit jako jednu komponentu předávající štafetu pracovního postupu jiné komponentě. Celý pracovní postup může být důležitým obchodním procesem a zpráva je malta, která obsahuje komponenty společně.
Zpráva obecně obsahuje skutečná data, nejen odkaz (například ID nebo adresu URL) na data. Odesílání dat v rámci datagramu je méně křehké než odeslání odkazu. Architektura zasílání zpráv zaručuje doručení zpráv a protože není potřeba provádět žádné další vyhledávání, je zpráva spolehlivě zpracována. Odesílající aplikace ale potřebuje přesně vědět, jaká data se mají zahrnout, aby se zabránilo odesílání příliš velkého množství dat, což by vyžadovalo, aby přijímající komponenta dělala zbytečnou práci. V tomto smyslu je odesílatel zprávy a příjemce často svázané striktním kontraktem dat.
V nové architektuře pro Společnost Contoso Bicycles se při zadání objednávky pravděpodobně používají zprávy. Webový front-end nebo mobilní aplikace odešle zprávu do komponent pro zpracování back-endu. Na back-endu se provádí kroky, jako je směrování do obchodu nejblíže zákazníkovi a účtování platební karty.
Události
Událost aktivuje upozornění, že se něco stalo. Události nejsou tak objemné jako zprávy a nejčastěji se používají pro komunikaci s všesměrovým vysíláním.
Události mají následující vlastnosti:
- Událost může být odeslána více příjemcům nebo vůbec žádné.
- Události jsou často určené k větvení nebo mají pro každého vydavatele velký počet odběratelů.
- Vydavatel události nemá žádné očekávání o akci, kterou přijímá přijímající komponenta.
Řetěz dílů jízdních kol by pravděpodobně používal události pro oznámení o změnách stavu uživatelů. Události změny stavu se dají odeslat do Azure Event Gridu, pak do Azure Functions a do Azure Notification Hubs pro zcela bezserverové řešení.
Rozdíl mezi událostmi a zprávami je zásadní, protože komunikační platformy jsou obecně určené ke zpracování buď událostí, nebo zpráv. Služba Service Bus je určená ke zpracování zpráv. Pokud chcete odesílat události, pravděpodobně zvolíte Event Grid.
Azure má také službu Azure Event Hubs, ale nejčastěji se používá pro konkrétní typ datového proudu s vysokým tokem komunikace, který se používá k analýze. Pokud jste například měli ve výrobních skladech síťové senzory, můžete pomocí služby Event Hubs ve spojení se službou Azure Stream Analytics sledovat vzory změn teploty, které můžou znamenat nežádoucí požár nebo opotřebení součástí.
Témata a fronty služby Service Bus
Azure Service Bus může vyměňovat zprávy dvěma různými způsoby: fronty a témata.
Co je fronta?
Fronta služby Service Bus je jednoduché dočasné umístění úložiště pro zprávy. Odesílající komponenta přidá zprávu do fronty. Cílová komponenta zprávu načte ze začátku fronty. Za normálních okolností každou zprávu přijme jen jeden příjemce.
Fronty oddělují zdrojové a cílové komponenty za účelem izolace cílových komponent od vysokého zatížení.
Ve špičkách můžou zprávy přicházet rychleji, než je můžou zpracovat cílové komponenty. Vzhledem k tomu, že zdrojové komponenty nemají přímé připojení k cíli, zdroj není ovlivněn a fronta roste. Cílové komponenty odebírají zprávy z fronty, jakmile je dokážou zpracovat. Když poptávka klesne, cílové komponenty se můžou dohnat a fronta se zkracuje.
Fronta reaguje na vysokou poptávku, aniž by bylo nutné do systému přidávat prostředky. U zpráv, které je potřeba rychle zpracovat, ale vytváření dalších instancí cílové komponenty jim umožní sdílet zatížení. Každá zpráva je zpracována pouze jednou instancí. Tato metoda představuje efektivní způsob škálování celé aplikace přidáním prostředků pouze do komponent, které ji skutečně potřebují.
Co je téma?
Téma služby Service Bus je podobné frontě, ale téma může mít více odběrů, což znamená, že více cílových komponent se může přihlásit k odběru konkrétního tématu, takže každá zpráva se doručí více příjemcům. Odběry také můžou filtrovat zprávy v tématu a přijímat pouze relevantní zprávy. Odběry poskytují stejnou oddělenou komunikaci jako fronty a stejným způsobem reagují na vysokou poptávku. Téma použijte, pokud chcete každou zprávu doručit do více než jedné cílové komponenty.
Poznámka:
Témata se nepodporují v cenové úrovni Basic.
Fronty služby Service Bus a fronty služby Storage
Mezi dvě služby Azure patří fronty zpráv: Service Bus a Azure Storage. Obecně platí, že fronty úložiště se snadněji používají, ale jsou méně sofistikované a méně flexibilní než fronty služby Service Bus.
Mezi klíčové výhody front Service Bus patří:
- Podporuje větší velikosti zpráv o velikosti 256 kB (úroveň Standard) nebo 100 MB (úroveň Premium) na zprávu a 64 kB pro zprávy fronty Azure Storage.
- Podporuje současně i nejméně jedno doručení. Vyberte si mezi velmi malou šancí, že se zpráva ztratí, nebo velmi malou šanci, že se zpracuje dvakrát.
- Zaručuje objednávku FIFO (first-in, first-out). Zprávy se zpracovávají ve stejném pořadí, v jakém se přidávají. I když je FIFO normální provoz fronty, výchozí vzor FIFO se změní, pokud organizace nastaví sekvencované nebo naplánované zprávy nebo během přerušení, jako je selhání systému. Další informace najdete v tématu Porovnání front Azure Storage a front Azure Service Bus.
- Může seskupit více zpráv v jedné transakci. Pokud se jedna zpráva v transakci nedoručí, všechny zprávy v transakci se nedoručí.
- Podporuje zabezpečení na základě rolí.
- Nevyžaduje, aby cílové komponenty nepřetržitě dotazovat frontu.
Výhody front služby Storage:
- Podporuje neomezenou velikost front (oproti 80 GB pro fronty služby Service Bus).
- Udržuje protokol všech zpráv.
Jak zvolit komunikační technologii
Viděli jste různé koncepty a implementace, které Azure poskytuje. Dále zvažte, jak by měl váš rozhodovací proces vypadat pro každou komunikaci.
Důležité informace
Při výběru metody odesílání a přijímání zpráv zvažte následující otázky:
Představuje komunikace událost? Pokud ano, zvažte službu Event Grid nebo Event Hubs.
Měla by se jedna zpráva doručit do více než jedno cíle? Pokud ano, použijte téma služby Service Bus. V opačném případě použijte frontu služby Service Bus.
Fronty: Service Bus vs. úložiště
Pokud se rozhodnete, že potřebujete frontu, zpřesněte svou volbu dále.
Zvolte frontu služby Service Bus, pokud:
- Potřebujete záruku doručení na maximum.
- Potřebujete záruku FIFO (pokud výchozí pořadí FIFO nezachytá žádné jiné nastavení).
- Potřebujete seskupovat zprávy do transakcí.
- Chcete dostávat zprávy bez dotazování fronty.
- Potřebujete poskytnout přístup na základě role k frontám.
- Pro úroveň Premium musíte zpracovávat zprávy větší než 64 kB, ale menší než 256 kB pro úroveň Standard nebo 100 MB.
- Velikost fronty nebude větší než 80 GB.
- Chcete mít možnost publikovat a využívat dávky zpráv.
Zvolte frontu úložiště, pokud:
- Potřebujete jednoduchou frontu bez konkrétních dalších požadavků.
- Potřebujete protokol auditu pro všechny zprávy, které projdou frontou.
- Očekáváte, že bude fronta větší než 80 GB.
- Chcete sledovat průběh zpracování zprávy uvnitř fronty.
I když komponenty distribuované aplikace můžou komunikovat přímo, často můžete zvýšit spolehlivost komunikace pomocí zprostředkující komunikační platformy, jako je Azure Event Hubs nebo Azure Event Grid.
Služba Event Hubs a Event Grid jsou určené pro události, které příjemce upozorní pouze na událost a neobsahují nezpracovaná data přidružená k této události. Služba Azure Event Hubs je navržená pro vysoce tokové analytické typy událostí.
Fronty služby Azure Service Bus a úložiště jsou určené pro zprávy, které můžete použít pro vazbu základních částí libovolného pracovního postupu aplikace.
Pokud jsou vaše požadavky jednoduché, pokud chcete každou zprávu odeslat jenom do jednoho cíle nebo pokud chcete psát kód co nejrychleji, může být nejlepší volbou fronta úložiště. Jinak fronty služby Service Bus poskytují mnohem více možností a větší flexibilitu.
Pokud chcete odesílat zprávy více odběratelům, použijte téma služby Service Bus.