Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Orleans streamování je funkce Orleans architektury, která vývojářům umožňuje psát reaktivní aplikace, které pracují s posloupností událostí strukturovaným způsobem. Orleans Streamování poskytuje sadu abstrakcí a rozhraní API, která zjednodušují a zpřehledňují práci s datovými proudy a zvyšují jejich robustnost. Stream je logická entita, která vždy existuje a nemůže nikdy selhat. Streamy jsou identifikovány jejich StreamId. Datové proudy umožňují oddělit generování dat od jejich zpracování, a to jak v čase, tak v prostoru. Streamy fungují jednotně napříč grainy a Orleans klienty a mohou být kompatibilní a přenosné s širokou škálou stávajících technologií řízení front, jako jsou Event Hubs, ServiceBus, Azure Queues a Apache Kafka. Orleans Streamování také podporuje dynamické vazby datových proudů, transparentní správu životního cyklu využití datových proudů a rozšiřitelné poskytovatele streamů.
Orleans v.1.0.0 byla přidána podpora rozšíření streamování do programovacího modelu. Rozšíření streamování poskytují sadu abstrakcí a rozhraní API, které zjednodušují a činí práci s proudy jednodušší a robustnější. Rozšíření streamování umožňují vývojářům psát reaktivní aplikace, které pracují se sekvencí událostí strukturovaným způsobem. Model rozšiřitelnosti poskytovatelů datových proudů zajišťuje, že programovací model je kompatibilní s celou řadou stávajících technologií řízení front, jako jsou Event Hubs, ServiceBus, Azure Queues a Apache Kafka. Není nutné psát speciální kód ani spouštět vyhrazené procesy pro interakci s těmito frontami.
Proč by mi mělo být jedno?
Pokud už znáte všechno o zpracování streamů a znáte technologie, jako jsou Event Hubs, Kafka, Azure Stream Analytics, Apache Storm, Streamování Apache Sparku a reaktivní rozšíření (Rx) v .NET, můžete se ptát, proč byste se měli starat. Proč potřebujeme ještě další systém zpracování datových proudů a jak se aktéři vztahují ke streamům?"Proč Orleans Proudy?" je určena k zodpovězení této otázky.
Programovací model
Za modelem programování streamů stojí několik principů Orleans.
- Orleans datové proudy jsou virtuální. To znamená, že stream vždy existuje. Není explicitně vytvořen ani zničen a nemůže nikdy selhat.
- Streamy se identifikují podle ID datových proudů, což jsou jenom logické názvy tvořené identifikátory GUID a řetězci.
- Orleans Streamy umožňují oddělit generování dat od jejich zpracování, a to jak v čase, tak v prostoru. To znamená, že producent datových proudů a příjemce datových proudů mohou být na různých serverech nebo v různých časových pásmech a budou odolat selháním.
- Orleans datové proudy jsou lehké a dynamické. Orleans Modul runtime streamování je navržen tak, aby zpracovával velký počet datových proudů, které přichází a odchází velkou rychlostí.
- Orleans vazby datových proudů jsou dynamické. Orleans Streaming Runtime je navržen tak, aby zpracovával případy, kdy se zrna vysokou rychlostí připojují a odpojují od datových proudů.
- Orleans Modul runtime streamování transparentně spravuje životní cyklus spotřeby datových proudů. Jakmile se aplikace přihlásí k odběru datového proudu, obdrží události streamu, a to i v případě selhání.
- Orleans datové proudy fungují jednotně napříč zrny a Orleans klienty.
Ukázka rychlého startu
Ukázka rychlého startu je dobrým rychlým přehledem celkového pracovního postupu používání datových proudů v aplikaci. Jakmile si to přečtete, měli byste si přečíst Programovací rozhraní pro streamy, abyste získali hlubší porozumění konceptům.
Poskytovatelé streamu
Streamy mohou pocházet skrze fyzické kanály různých tvarů a podob a mohou mít různou sémantiku. Orleans Streamování je navržené tak, aby tuto rozmanitost podporovalo prostřednictvím konceptu poskytovatelů streamů, což je bod rozšiřitelnosti v systému.
Orleans poskytuje několik implementací poskytovatele datových proudů:
Orleans v současné době zahrnuje několik implementací poskytovatele:
- Jednoduchá zpráva (SMS), která používá přímá volání grainů a bez podpůrného úložného systému,
- Fronty Azure, které k ukládání zpráv používají fronty Azure Storage a
- Azure EventHubs, která používá Azure EventHubs
Další informace najdete v tématu Poskytovatelé streamu.
Sémantika streamu
Sémantika odběru streamu:
Orleans Streamy zaručují sekvenční konzistenci pro operace přihlášení k odběru streamu. Konkrétně platí, že když se příjemce přihlásí k odběru datového proudu, po Task úspěšném vyřešení operace předplatného se příjemci zobrazí všechny události, které se vygenerovaly po přihlášení k odběru. Kromě toho rewindable streamy umožňují přihlásit se k odběru z libovolného bodu v čase v minulosti pomocí StreamSequenceToken. Další informace najdete v tématu Orleans Poskytovatelé datových proudů.
Záruky doručení jednotlivých událostí streamu:
Záruky doručování jednotlivých událostí závisí na jednotlivých poskytovatelích datových proudů. Některé poskytují doručování s maximálním úsilím a nejvýše jednou (například Simple Message Streams (SMS) ve verzích starších než Orleans 7.0, dále označovaných jako Broadcast Channel), zatímco jiné zajišťují doručení alespoň jednou (například Azure Queue Streams). Je dokonce možné vytvořit poskytovatele streamování, který bude zaručit přesně jedno doručení.
Objednávka doručení událostí:
Pořadí událostí také závisí na konkrétním poskytovateli datového proudu. Ve streamech SMS producent explicitně řídí pořadí událostí, které uživatel vidí, tím, že řídí způsob, jakým je publikuje. Streamy front Azure nezaručují objednávku FIFO, protože podkladové fronty Azure nezaručují pořadí v případech selhání. Aplikace mohou také řídit své pořadí doručování datových proudů pomocí StreamSequenceToken.
Implementace streamů
ImplementaceOrleans datových proudů poskytuje základní přehled interní implementace.
Ukázky kódu
Další příklady, jak použít rozhraní API pro streamování v rámci granu, najdete v SampleStreamingGrain.cs.