Partager via


Diffusion en continu avec Orleans

Orleans la diffusion en continu est une fonctionnalité de l’infrastructure Orleans qui permet aux développeurs d’écrire des applications réactives qui fonctionnent sur une séquence d’événements de manière structurée. Orleans Le streaming fournit un ensemble d’abstractions et d’API qui simplifient la réflexion et le travail avec les flux, les rendant plus simples et plus robustes. Un flux est une entité logique qui existe toujours et ne peut jamais échouer. Les flux sont identifiés par leur StreamId. Les flux permettent de dissocier la génération de données de son traitement, à la fois dans le temps et dans l’espace. Les flux fonctionnent de manière uniforme sur tous les fragments et tous les clients Orleans, et peuvent être compatibles et portables sur une large gamme de technologies de mise en file d'attente existantes, telles que les hubs d'événements, ServiceBus, Azure Queues et Apache Kafka. Le streaming de Orleans prend également en charge les liaisons de flux dynamiques, la gestion transparente du cycle de vie de la consommation des flux et les fournisseurs de flux extensibles.

Orleans v.1.0.0 a ajouté la prise en charge des extensions de streaming au modèle de programmation. Les extensions de streaming fournissent un ensemble d’abstractions et d’API qui rendent la réflexion et l’utilisation de flux plus simples et plus robustes. Les extensions de diffusion en continu permettent aux développeurs d’écrire des applications réactives qui fonctionnent sur une séquence d’événements de manière structurée. Le modèle d’extensibilité des fournisseurs de flux rend le modèle de programmation compatible avec et portable sur un large éventail de technologies de mise en file d’attente existantes, telles que Event Hubs, ServiceBus, Files d’attente Azure et Apache Kafka. Il n’est pas nécessaire d’écrire du code spécial ou d’exécuter des processus dédiés pour interagir avec ces files d’attente.

Pourquoi dois-je m’occuper ?

Si vous connaissez déjà le traitement de flux et que vous connaissez déjà les technologies telles que Event Hubs, Kafka, Azure Stream Analytics, Apache Storm, Apache Spark Streaming et Les extensions réactives (Rx) dans .NET, vous pouvez vous demander pourquoi vous devez vous soucier. Pourquoi avons-nous besoin d’un autre système de traitement de flux et comment les acteurs sont liés aux flux ?"Pourquoi Orleans Flux ? est destiné à répondre à cette question.

Modèle de programmation

Il existe plusieurs principes derrière Orleans le modèle de programmation de flux :

  1. Orleans les flux sont virtuels. Autrement dit, un flux existe toujours. Elle n’est pas explicitement créée ou détruite et ne peut jamais échouer.
  2. Les flux sont identifiés par des ID de flux, qui sont simplement des noms logiques composés de GUID et de chaînes.
  3. Orleans Les flux vous permettent de dissocier la génération de données de son traitement, à la fois dans le temps et dans l’espace. Cela signifie que le producteur de flux et le consommateur de flux peuvent se trouver sur des serveurs différents ou dans différents fuseaux horaires et résisteront aux défaillances.
  4. Orleans les flux sont légers et dynamiques. Orleans Le runtime de streaming est conçu pour gérer un grand nombre de flux qui viennent et vont à un taux élevé.
  5. Orleans Les liaisons de flux sont dynamiques. Orleans Le runtime de streaming est conçu pour gérer les cas où les grains se connectent et se déconnectent des flux à un débit élevé.
  6. Orleans Le runtime de streaming gère de manière transparente le cycle de vie de la consommation de flux. Une fois qu’une application s’abonne à un flux, elle reçoit ensuite les événements du flux, même en présence d’échecs.
  7. Orleans envoie du travail en streaming uniformément entre les grains et les Orleansclients.

Exemple de démarrage rapide

L’exemple de démarrage rapide est une bonne vue d’ensemble du flux de travail global de l’utilisation de flux de données dans l’application. Après la lecture, vous devez lire les API de programmation de flux pour mieux comprendre les concepts.

Fournisseurs de flux

Les flux peuvent provenir de canaux physiques de différentes formes et formes et peuvent avoir une sémantique différente. Orleans Le streaming est conçu pour prendre en charge cette diversité via le concept de fournisseurs de flux, qui est un point d’extensibilité dans le système.

Orleans fournit plusieurs implémentations de fournisseur de flux :

Orleans inclut actuellement plusieurs implémentations de fournisseurs :

  • Message simple (SMS), qui utilise des appels directs par fragments et aucun système de stockage de sauvegarde,
  • Azure Queues, qui utilise Azure Storage Queues pour stocker les messages, et
  • Azure EventHubs, qui utilise Azure EventHubs

Pour plus d’informations, consultez Fournisseurs de flux.

Sémantique de flux

Sémantique d’abonnement de flux :

Orleans Les flux garantissent une cohérence séquentielle pour les opérations d’abonnement de flux. Plus précisément, lorsqu’un consommateur s’abonne à un flux, une fois que l’opération Task représentant l’abonnement a été correctement résolue, le consommateur voit tous les événements générés après son abonnement. En outre, les flux rewindables vous permettent de vous abonner à partir d’un point arbitraire dans le temps dans le passé en utilisant StreamSequenceToken. Pour plus d’informations, consultez Orleans fournisseurs de flux.

Garanties de remise d’événements de flux individuels :

Les garanties de livraison individuelle d'événements dépendent de chaque fournisseur de flux. Certaines offrent uniquement une livraison au mieux, au plus une fois (telles que les flux de messages simples (SMS) dans les versions de Orleans antérieures à 7.0, appelées ensuite chaîne de diffusion), tandis que d'autres offrent une livraison au moins une fois (telles que les flux de file d'attente Azure). Il est même possible de créer un fournisseur de flux qui garantit une livraison unique.

Ordre de remise d’événements :

L’ordre des événements dépend également d’un fournisseur de flux particulier. Dans les flux SMS, le producteur contrôle explicitement l’ordre des événements vus par le consommateur en contrôlant la façon dont il les publie. Les flux de file d’attente Azure ne garantissent pas l’ordre FIFO, car les files d’attente Azure sous-jacentes ne garantissent pas l’ordre en cas d’échec. Les applications peuvent également contrôler l'ordre de livraison de flux à l’aide de StreamSequenceToken.

Implémentation des flux

L'implémentation Orleans Streams fournit une vue d'ensemble de haut niveau de l'implémentation interne.

Exemples de code

Vous trouverez d’autres exemples d’utilisation d’API de diffusion en continu dans un grain à SampleStreamingGrain.cs.

Voir aussi