Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Orleans streaming is een functie van het Orleans framework waarmee ontwikkelaars reactieve toepassingen kunnen schrijven die op een gestructureerde manier op een reeks gebeurtenissen werken. Orleans streaming biedt een set abstracties en API's waarmee u eenvoudiger en krachtiger kunt nadenken over en werken met streams. Een stream is een logische entiteit die altijd bestaat en die nooit kan mislukken. Streams worden geïdentificeerd door hun StreamId. Met streams kan het genereren van gegevens worden losgekoppeld van de verwerking, zowel in tijd als ruimte. Streams werken uniform over grains en Orleans clients en zijn compatibel en draagbaar met een breed scala aan bestaande wachtrijtechnologieën, zoals Event Hubs, ServiceBus, Azure Queues en Apache Kafka. Orleans streaming biedt ook ondersteuning voor dynamische stroombindingen, levenscyclusbeheer voor transparante stromen en uitbreidbare streamproviders.
Orleans v.1.0.0 heeft ondersteuning toegevoegd voor streaming-extensies voor het programmeermodel. Streaming-extensies bieden een set abstracties en API's die het denken over en werken met streams eenvoudiger en robuuster maken. Met streaming-extensies kunnen ontwikkelaars reactieve toepassingen schrijven die op een gestructureerde manier op een reeks gebeurtenissen werken. Het uitbreidbaarheidsmodel van streamproviders maakt het programmeermodel compatibel met en draagbaar voor een breed scala aan bestaande wachtrijtechnologieën, zoals Event Hubs, ServiceBus, Azure Queues en Apache Kafka. U hoeft geen speciale code te schrijven of speciale processen uit te voeren om met dergelijke wachtrijen te communiceren.
Waarom zou het me schelen?
Als u al alles weet over Stream Processing en bekend bent met technologieën zoals Event Hubs, Kafka, Azure Stream Analytics, Apache Storm, Apache Spark Streaming en Reactieve extensies (Rx) in .NET, vraagt u zich misschien af waarom het u zou schelen. Waarom hebben we nog een streamverwerkingssysteem nodig en hoe actoren verband houden met streams?"Waarom Orleans streams?" is bedoeld om die vraag te beantwoorden.
Programmeermodel
Er zijn verschillende principes achter Orleans Streams Programming Model:
- Orleans streams zijn virtueel opgezet. Dat wil gezegd, er bestaat altijd een stroom. Het is niet expliciet gemaakt of vernietigd en kan nooit mislukken.
- Streams worden geïdentificeerd door stream-id's, die alleen logische namen zijn die bestaan uit GUID's en tekenreeksen.
- Orleans Met streams kunt u het genereren van gegevens loskoppelen van de verwerking, zowel in tijd als ruimte. Dit betekent dat de streamproducent en de streamconsumer zich op verschillende servers of in verschillende tijdzones bevinden en bestand zijn tegen fouten.
- Orleans streams zijn lichtgewicht en dynamisch. Orleans Streaming Runtime is ontworpen voor het verwerken van een groot aantal streams die een hoge snelheid hebben.
- Orleans stroombindingen zijn dynamisch. Orleans Streaming Runtime is ontworpen voor het afhandelen van gevallen waarin korrels verbinding maken met en de verbinding met streams met een hoge snelheid verbreken.
- Orleans Streaming Runtime beheert transparant de levenscyclus van het stroomverbruik. Nadat een toepassing zich heeft geabonneerd op een stream, ontvangt deze vervolgens de gebeurtenissen van de stream, zelfs in aanwezigheid van fouten.
- Orleans datastromen functioneren gelijkmatig over korrels en Orleans cliënten.
Snelstartvoorbeeld
Het snelstartvoorbeeld is een goed overzicht van de algemene werkstroom voor het gebruik van streams in de toepassing. Nadat u deze hebt gelezen, moet u de Streams Programming-API's lezen om meer inzicht te krijgen in de concepten.
Streamproviders
Streams kunnen worden geleverd via fysieke kanalen van verschillende vormen en formulieren en kunnen verschillende semantiek hebben. Orleans Streaming is ontworpen om deze diversiteit te ondersteunen via het concept van Stream Providers, een uitbreidbaarheidspunt in het systeem.
Orleans biedt verschillende implementaties van streamproviders:
Orleans bevat momenteel verschillende provider-implementaties:
- Simple Message (SMS), die directe graanoproepen gebruikt en geen back-upsysteem voor opslag,
- Azure Queues, die gebruikmaakt van Azure Storage-wachtrijen voor het opslaan van berichten en
- Azure EventHubs, die gebruikmaakt van Azure EventHubs
Zie Stream-providers voor meer informatie.
Streamsemantiek
Semantiek voor streamabonnement:
Orleans Streams garanderen sequentiële consistentie voor Stream-abonnementsbewerkingen. Wanneer een consument zich abonneert op een stream, ziet de consument, zodra de Task
weergave van de abonnementsbewerking is opgelost, alle gebeurtenissen die zijn gegenereerd nadat deze zich heeft geabonneerd. Bovendien kunt u met rewindable streams vanaf een willekeurig tijdstip in het verleden een abonnement nemen door gebruik te maken van StreamSequenceToken. Zie Orleans streamproviders voor meer informatie.
Leveringsgaranties voor individuele streaming-gebeurtenissen
Garanties voor de levering van afzonderlijke gebeurtenissen zijn afhankelijk van afzonderlijke streamproviders. Sommige bieden slechts levering met optimale inspanning en hooguit eenmaal (zoals Simple Message Streams (SMS) in versies van Orleans vóór 7.0, daarna bekend als Broadcast-kanaal), terwijl anderen levering van ten minste één keer bieden (zoals Azure Queue Streams). Het is zelfs mogelijk om een streamingprovider te bouwen die precies één levering garandeert.
Leveringsopdracht evenementen:
Gebeurtenisvolgorde is ook afhankelijk van een bepaalde streamprovider. In SMS-streams bepaalt de producent expliciet de volgorde van gebeurtenissen die door de consument worden gezien door de manier waarop deze worden gepubliceerd. Azure Queue-streams garanderen geen FIFO-volgorde, omdat de onderliggende Azure-wachtrijen de volgorde in foutgevallen niet garanderen. Toepassingen kunnen hun leveringsvolgorde ook beheren met behulp van StreamSequenceToken.
Streams-implementatie
De Orleans streams-implementatie biedt een algemeen overzicht van de interne implementatie.
Codevoorbeelden
In SampleStreamingGrain.cs kunt u meer voorbeelden vinden van hoe je streaming-API's binnen een grain gebruikt.