Orleans streamproviders
Stromen kunnen in verschillende vormen en vormen worden geleverd. Sommige streams kunnen gebeurtenissen leveren via directe TCP-koppelingen, terwijl andere gebeurtenissen via duurzame wachtrijen leveren. Verschillende stroomtypen kunnen verschillende batchstrategieën, verschillende cachealgoritmen of verschillende backpressureprocedures gebruiken. Om te voorkomen dat streamingtoepassingen worden beperkt tot slechts een subset van deze gedragskeuzen, zijn streamproviders uitbreidbaarheidspunten voor Orleans Streaming Runtime waarmee gebruikers elk type stream kunnen implementeren. Dit uitbreidbaarheidspunt is vergelijkbaar met Orleans opslagproviders.
Azure Event Hub-streamprovider
Azure Event Hub is een volledig beheerde, realtime gegevensopnameservice die miljoenen gebeurtenissen per seconde kan ontvangen en verwerken. Het is ontworpen voor het verwerken van de opname van gegevens met hoge doorvoer en lage latentie van gegevens uit meerdere bronnen en de daaropvolgende verwerking van die gegevens door meerdere consumenten.
Event Hubs wordt vaak gebruikt als de basis van een grotere architectuur voor gebeurtenisverwerking, waarbij deze fungeert als de 'voordeur' voor een gebeurtenispijplijn. Het kan worden gebruikt om gegevens op te nemen uit een groot aantal bronnen, waaronder feeds voor sociale media, IoT-apparaten en logboekbestanden. Een van de belangrijkste voordelen van Event Hubs is de mogelijkheid om horizontaal uit te schalen om te voldoen aan de behoeften van zelfs de grootste workloads voor gebeurtenisverwerking. Het is ook maximaal beschikbaar en fouttolerant, met meerdere replica's van gegevens die zijn gedistribueerd over meerdere Azure-regio's om hoge beschikbaarheid te garanderen.
De Microsoft.Orleans. Streaming.EventHubs NuGet-pakket bevat de Event Hubs-streamprovider.
AQ-stroomprovider (Azure Queue)
De AQ-stroomprovider (Azure Queue) levert gebeurtenissen via Azure Queues. Aan de kant van de producent worden gebeurtenissen van de AQ-streamprovider rechtstreeks in Azure Queue geplaatst. Aan de consumentenzijde beheert de AQ-streamprovider een set pull-agents die gebeurtenissen uit een set Azure Queues ophalen en deze leveren aan de toepassingscode die ze verbruikt. U kunt de pull-agents beschouwen als een gedistribueerde 'microservice': een gepartitioneerd, maximaal beschikbaar en elastisch gedistribueerd onderdeel. De pull-agents worden uitgevoerd binnen dezelfde silo's die toepassingskorrels hosten. Daarom hoeft u geen afzonderlijke Azure-werkrollen uit te voeren om uit de wachtrijen te halen. Het bestaan van pull-agents, hun beheer, tegendruk, het verdelen van de wachtrijen ertussen en het overdragen van wachtrijen van een mislukte agent aan een andere agent, worden volledig beheerd door Orleans Streaming Runtime en zijn transparant voor toepassingscode die gebruikmaakt van streams.
De Microsoft.Orleans. Streaming.AzureStorage NuGet-pakket bevat de Azure Queue Storage-stroomprovider .
Wachtrijadapters
Verschillende streamproviders die gebeurtenissen leveren via duurzame wachtrijen vertonen vergelijkbaar gedrag en zijn onderworpen aan een vergelijkbare implementatie. Daarom bieden we een algemeen uitbreidbaar PersistentStreamProvider waarmee ontwikkelaars verschillende soorten wachtrijen kunnen aansluiten zonder dat ze een volledig nieuwe streamprovider hoeven te schrijven. PersistentStreamProvider
maakt gebruik van een IQueueAdapter onderdeel, waarmee specifieke implementatiedetails van de wachtrij worden geabstraheerd en waarmee gebeurtenissen in de wachtrij kunnen worden geduquenteerd en gedequenteerd. Alle rest wordt verwerkt door de logica in de PersistentStreamProvider
. Azure Queue Provider die hierboven wordt vermeld, wordt ook op deze manier geïmplementeerd: het is een exemplaar van PersistentStreamProvider
een AzureQueueAdapter
.
Eenvoudige berichtenstroomprovider
De eenvoudige berichtenstroomprovider, ook wel bekend als de SMS-provider, levert gebeurtenissen via TCP door middel van reguliere Orleans graanberichten. Omdat gebeurtenissen in sms via onbetrouwbare TCP-koppelingen worden geleverd, garandeert SMS geen betrouwbare gebeurtenislevering en worden mislukte berichten niet automatisch opnieuw verzonden voor SMS-streams. Standaard wordt door de producent een aanroep geretourneerd OnNextAsync die de verwerkingsstatus van de streamgebruiker vertegenwoordigt Task
, waarmee de producent wordt geïnformeerd of de consument de gebeurtenis heeft ontvangen en verwerkt. Als deze taak mislukt, kan de producent besluiten om dezelfde gebeurtenis opnieuw te verzenden, waardoor de betrouwbaarheid op toepassingsniveau wordt bereikt. Hoewel de levering van streamberichten het beste is, zijn sms-streams zelf betrouwbaar. Dat wil gezegd, de abonnee-naar-producentbinding die door Pub-Sub wordt uitgevoerd, is volledig betrouwbaar.