Partager via


Fournisseurs de flux Orleans

Les flux peuvent se présenter sous différents aspects et formes. Certains flux peuvent remettre des événements via des liaisons TCP directes, tandis que d’autres remettent des événements via des files d’attente durables. Différents types de flux peuvent utiliser différentes stratégies de traitement par lots, différents algorithmes de mise en cache ou différentes procédures de régulation. Pour éviter de limiter les applications de streaming à un sous-ensemble de ces choix comportementaux, les fournisseurs de flux constituent des points d’extensibilité vers le runtime de streaming Orleans qui permettent aux utilisateurs d’implémenter n’importe quel type de flux. Ce point d’extensibilité est similaire, dans l’esprit, à celui des fournisseurs de stockage Orleans.

Fournisseur de flux Azure Event Hub

Azure Event Hubs est un service complètement managé d’ingestion de données en temps réel, capable de recevoir et de traiter des millions d’événements par seconde. Il est conçu pour gérer l’ingestion à haut débit et à faible latence des données provenant de plusieurs sources et le traitement ultérieur de ces données par plusieurs consommateurs.

Event Hubs est souvent utilisé comme base d’une architecture de traitement des événements plus grande, où il sert de « porte d’entrée » pour un pipeline d’événements. Il permet d’ingérer des données provenant d’un large éventail de sources, notamment des flux de réseaux sociaux, des appareils IoT et des fichiers journaux. L’un des principaux avantages d’Event Hubs est la possibilité d’effectuer un scale-out pour répondre aux besoins des plus grosses charges de travail de traitement des événements. Il est également hautement disponible et tolérant aux pannes, grâce à plusieurs réplicas de données distribués dans différentes régions Azure.

Le package NuGet Microsoft.Orleans.Streaming.EventHubs contient le fournisseur de flux Event Hubs.

Fournisseur de flux de file d’attente Azure

Le fournisseur de flux de file d’attente Azure remet les événements via les files d’attente Azure. Côté producteur, le fournisseur de flux de file d’attente Azure met en file d’attente les événements directement dans la file d’attente Azure. Côté consommateur, le fournisseur de flux de file d’attente Azure gère un ensemble d’agents de tirage (pull) qui tirent des événements à partir d’un ensemble de files d’attente Azure et les remettent au code d’application qui les consomme. On peut considérer les agents de tirage comme un « micro-service » distribué, un composant partitionné, hautement disponible et distribué de manière élastique. Les agents de tirage s’exécutent à l’intérieur des silos qui hébergent les grains d’application. Par conséquent, il n’est pas nécessaire d’exécuter des rôles de travail Azure distincts pour tirer (pull) les événements des files d’attente. L’existence d’agents de tirage (pull), leur gestion, la contrepression, l’équilibrage des files d’attente et le transfert des files d’attente d’un agent en échec à un autre agent sont complètement managés par le runtime de streaming Orleans. Ces opérations sont transparentes pour le code d’application qui utilise des flux.

Le package NuGet Microsoft.Orleans.Streaming.AzureStorage contient le fournisseur de flux Stockage File d’attente Azure.

Adaptateurs de file d’attente

Différents fournisseurs de flux qui remettent les événements via des files d’attente durables présentent un comportement similaire et font l’objet d’une implémentation similaire. Par conséquent, nous fournissons aux développeurs un élément PersistentStreamProvider extensible générique qui leur permet de brancher différents types de files d’attente sans avoir à écrire un nouveau fournisseur de flux à partir de zéro. PersistentStreamProvider utilise un composant IQueueAdapter, qui permet de faire abstraction de détails d’implémentation de file d’attente spécifiques et fournit le moyen de mettre en file d’attente et d’en retirer des événements. Tout le reste est géré par la logique comprise dans PersistentStreamProvider. Le fournisseur de files d’attente Azure mentionné ci-dessus est également implémenté de cette façon : il s’agit d’une instance de PersistentStreamProvider qui utilise un AzureQueueAdapter.

Fournisseur de flux de messages simple

Le fournisseur SMS (Simple Message Stream) remet des événements par TCP en utilisant la messagerie de grain Orleans standard. Comme les événements dans SMS sont remis via des liaisons TCP non fiables, SMS ne garantit pas la remise fiable des événements et ne renvoie pas automatiquement les messages ayant échoué pour les flux SMS. Par défaut, l’appel du producteur à OnNextAsync retourne un objet Task qui représente l’état de traitement du consommateur de flux, qui indique au producteur si le consommateur a reçu et traité l’événement avec succès. Si cette tâche échoue, le producteur peut décider d’envoyer à nouveau le même événement, ce qui permet d’assurer la fiabilité au niveau de l’application. Bien que la remise des messages de flux représente le meilleur effort, les flux SMS eux-mêmes sont fiables. Autrement dit, la liaison abonné à producteur effectuée par Pub-Sub est complètement fiable.

Voir aussi

Détail de l’implémentation des flux Orleans