Concepts relatifs aux espaces de noms dans Azure Event Grid

Cet article décrit les principaux concepts et fonctionnalités associés aux rubriques d’espace de noms.

Événements

Un événement correspond à la plus petite quantité d’informations décrivant intégralement quelque chose qui s’est produit dans le système. Un événement est souvent appelé un événement discret, car il représente un fait distinct et autonome sur un système qui fournit des insights actionnables. Chaque événement possède des informations communes telles que la source de l’événement, la time à laquelle l’événement a eu lieu et un identificateur unique. Chaque événement a également un type, qui est généralement un identificateur unique qui décrit le type d’annonce pour lequel l’événement est utilisé.

Par exemple, un événement concernant un fichier en cours de création dans le Stockage Azure a des informations détaillées sur le fichier, notamment la valeur lastTimeModified. Un événement Event Hubs contient l’URL du fichier capturé. Un événement concernant une nouvelle commande dans votre microservice Orders pourrait avoir un attribut orderId et un attribut URL pour la représentation de l’état de la commande. Voici quelques exemples supplémentaires de types d’événements : com.yourcompany.Orders.OrderCreated, org.yourorg.GeneralLedger.AccountChanged, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Voici un exemple d’événement :

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

Un autre type d’événement

La communauté d’utilisateurs fait également référence aux messages qui portent un point de données, comme une seule lecture d’appareil ou un clic sur une page d’application web, en tant que « événements ». Vous analysez généralement ce type d’événement dans une fenêtre de temps pour dériver des insights et effectuer une action. Dans la documentation Event Grid, ce type d’événement est appelé point de données, données de streaming ou simplement télémétrie. La fonctionnalité broker Message Queuing Telemetry Transport (MQTT) d’Event Grid utilise ce type d’événement, entre autres types de messages.

Support pour CloudEvents

Les rubriques d’espace de noms Event Grid acceptent les événements conformes à la spécification du standard ouvert de la Cloud Native Computing Foundation (CNCF) CloudEvents 1.0 à l’aide de la liaison de protocole HTTP au format JSON. Un CloudEvent est un type de message qui contient ce qui est communiqué, que l’on appelle données d’événement, ainsi que des métadonnées à son sujet. Les données d’événement dans les architectures pilotées par les événements portent généralement les informations annonçant une modification d’état système. Les métadonnées CloudEvents se composent d’un ensemble d’attributs qui fournissent des informations contextuelles sur le message, telles que son origine (le système source) et son type.

Pour découvrez plus d’informations, consultez Support pour le schéma CloudEvents.

Éditeurs

Un éditeur est l’application qui envoie des événements à Event Grid. Il peut s’agir de la même application que celle où proviennent les événements, la source d’événement. Vous pouvez publier des événements à partir de votre propre application lorsque vous utilisez des rubriques d’espace de noms.

Sources d’événement

La source d’un événement désigne l’endroit où l’événement se produit. Chaque source d’événement prend en charge un ou plusieurs types d’événements. Par exemple, votre application est la source d’événements pour les événements personnalisés définis par votre système. Lorsque vous utilisez des rubriques d’espace de noms, les sources d’événements prises en charge sont vos propres applications.

Espaces de noms

Un espace de noms Event Grid est un conteneur de gestion pour les ressources suivantes :

Ressource Protocole pris en charge
Rubriques d’espace de noms HTTP
Espaces thématiques MQTT
Clients MQTT
Groupes de clients MQTT
Certificats de l’autorité de certification MQTT
Liaisons d’autorisation MQTT

En utilisant un espace de noms Azure Event Grid, vous pouvez regrouper les ressources associées et les gérer comme une seule unité dans votre abonnement Azure. Elle vous donne un nom de domaine pleinement qualifié (FQDN) unique.

Un espace de noms expose deux points de terminaison :

  • Point de terminaison HTTP permettant de répondre aux besoins généraux de messagerie à l’aide de rubriques d’espace de noms.
  • Un point de terminaison MQTT pour la messagerie IoT ou des solutions qui utilisent MQTT.

Un espace de noms fournit également des points de terminaison réseau intégrés DNS. Il fournit aussi une gamme de fonctionnalités de contrôle d’accès et de gestion de l’intégration réseau, telles que le filtrage d’entrée IP publique et les liaisons privées. Il s’agit également du conteneur d’identités managées utilisé pour les ressources contenues dans l’espace de noms.

Voici quelques points supplémentaires sur les espaces de noms :

  • Un espace de noms est une ressource suivie avec les propriétés tags et location. Après l’avoir créé, vous pouvez le trouver sur resources.azure.com.
  • Le nom de l’espace de noms peut être compris entre 3 et 50 caractères. Elle peut inclure des caractères alphanumériques, des traits d’union (-), et aucun espace.
  • Le nom doit être unique pour chaque région.

Unités de débit

Les unités de débit (TU) définissent la capacité en taux d’événements entrants et sortants au sein des espaces de noms. Si vous souhaitez obtenir plus d’informations, consultez Quotas et limites Azure Event Grid.

Mise à l’échelle automatique

Autoscale ajuste automatiquement le nombre d’unités de débit attribuées à un espace de noms Event Grid en fonction du trafic en temps réel et de l’utilisation des ressources. Il surveille en continu les indicateurs clés de performance et ajuste la capacité dans les limites minimales et maximales que vous configurez. Ce comportement aide à maintenir une performance constante lors des pics de charge de travail et réduit les coûts pendant les périodes de faible activité sans nécessiter d’intervention manuelle.

Pour utiliser l’Autoscale, vous l’activez dans l’espace de noms et spécifiez :

  • Unités à débit minimum : Le plancher de capacité. L’espace de noms ne s’étend pas en dessous de cette valeur.
  • Unités de débit maximal : Le plafond de capacité. L’espace de noms ne peut pas être étendu au-delà de cette valeur.

Event Grid évalue l’utilisation liée à l’ingestion et à la sortie des événements, aux débits de publication MQTT entrants et sortants, ainsi qu’au nombre de clients MQTT enregistrés. Lorsqu’une catégorie dépasse le seuil de montée en charge, des TU supplémentaires sont provisionnées. Lorsque toutes les catégories passent en dessous du seuil de réduction, les TU sont libérées. Les périodes de recharge entre les opérations de mise à l’échelle empêchent les oscillations rapides.

La mise à l’échelle automatique est utile pour les charges de travail utilisant MQTT, où la diffusion des messages et la croissance des abonnements peuvent évoluer rapidement à mesure que les appareils se connectent et se déconnectent. C’est aussi utile pour les charges de travail de courtiers d’événements soumises à des pics de trafic.

Pour les détails de configuration et les limites de capacité par TU, consultez l’aperçu et le guide pratiqued’Autoscale.

Rubriques

Une rubrique contient les événements qui ont été publiés sur Event Grid. Vous utilisez généralement une ressource de type rubrique pour une collection d’événements associés. Les rubriques à l’intérieur d’un espace de noms sont souvent appelées rubriques d’espace de noms.

Rubriques d’espace de noms

Les rubriques d’espace de noms sont des rubriques créées dans un espace de noms Event Grid. Votre application publie des événements sur un point de terminaison d’espace de noms HTTP spécifiant une rubrique d’espace de noms dans laquelle les événements publiés sont contenus logiquement. Lorsque vous concevez votre application, décidez du nombre de rubriques à créer. Pour les solutions relativement volumineuses, créez une rubrique d’espace de noms pour chaque catégorie d’événements connexes. Par exemple, considérez une application qui gère les comptes d’utilisateur et une autre application sur les commandes des clients. Il est peu probable que tous les abonnés aux événements veuillent recevoir des événements provenant des deux applications. Pour séparer les problèmes, créez deux rubriques d’espace de noms : une pour chaque application. Laissez les consommateurs d’événements s’abonner à la rubrique en fonction de leurs besoins. Pour les petites solutions, vous préférerez peut-être envoyer tous les événements à un seul sujet.

Les rubriques d’espace de noms prennent en charge la remise pull et la remise push. Consultez quand utiliser la livraison pull ou push pour vous aider à déterminer si la livraison pull est la bonne approche en fonction de vos besoins.

Abonnements à des événements

Un abonnement aux événements est une ressource de configuration associée à une seule rubrique. Entre autres choses, utilisez un abonnement à un événement pour définir les critères de sélection d’événements afin de définir la collection d’événements disponible pour un abonné à partir de l’ensemble des événements disponibles dans un sujet. Vous pouvez filtrer des événements en fonction des exigences de l’abonné. Par exemple, vous pouvez filtrer des événements par leur type d’événement. Vous pouvez également définir des critères de filtre sur les propriétés des données d’événement si vous utilisez un objet JSON comme valeur de la propriété de données . Pour plus d’informations sur les propriétés des ressources, consultez la documentation de l’API REST de l’Event Grid.

Diagramme montrant une rubrique et abonnements aux événements associés.

Pour obtenir un exemple de création d’abonnements pour les rubriques d’espace de noms, consultez Publier et consommer des messages à l’aide de rubriques d’espace de noms à l’aide de l’interface CLI.

Remarque

Les abonnements aux événements dans une rubrique d’espace de noms offrent un modèle de ressources simplifié par rapport à celui utilisé pour les rubriques personnalisées, de domaine, partenaires et système (Event Grid Basic). Si vous souhaitez obtenir plus d’informations, consultez Créer, afficher et gérer des abonnements à des événements.

Remise pull

Avec le modèle pull, votre application se connecte à Event Grid pour lire les messages selon une sémantique de type file d’attente. Lorsque les applications se connectent à Event Grid pour consommer des événements, elles contrôlent le taux de consommation et le minutage des événements. Les applications grand public peuvent également utiliser des points de terminaison privés lors de la connexion à Event Grid pour lire des événements à l’aide de l’espace IP privé.

La remise pull prend en charge les opérations suivantes pour lire les messages et contrôler l’état des messages : recevoir, accuser réception, publier, rejeteret renouveler le verrou. Pour en savoir plus, consultez la vue d’ensemble de la distribution pull.

Structure des données lors de la réception d’événements par récupération

Lorsque vous distribuez des événements à l’aide d’une distribution de type pull, Event Grid inclut un tableau d’objets contenant eux-mêmes les objets event et brokerProperties. La valeur de la propriété event est le CloudEvent remis en mode de contenu structuré. L’objet brokerProperties contient le jeton de verrouillage associé à CloudEvent remis. L’objet JSON suivant est un exemple de réponse d’une opération de réception qui retourne deux événements :

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Livraison push

Avec la remise push, Event Grid envoie des événements à une destination configurée dans un abonnement aux événements en mode de remise push. Il fournit une logique de nouvelle tentative robuste si la destination ne peut pas recevoir d’événements.

Important

La distribution push des espaces de noms Event Grid prend actuellement en charge Azure Event Hubs en tant que destination. À l’avenir, les espaces de noms Event Grid prendront en charge davantage de destinations, y compris toutes les destinations prises en charge par Event Grid De base.

Remise d’événements Event Hubs

Event Grid utilise le Kit de développement logiciel (SDK) Event Hubs pour envoyer des événements à Event Hubs à l’aide d’AMQP. Les événements sont envoyés en tant que tableau d’octets, où chaque élément du tableau contient un CloudEvent.

Livraison push-and-pull

Event Grid prend en charge la remise d’événements push et pull à l’aide de HTTP. Avec la distribution Push, vous définissez comme destination un abonnement aux événements, un webhook ou un service Azure, vers lequel Event Grid envoie des événements. Avec la livraison pull, les applications abonnées se connectent à Event Grid pour consommer des événements. La remise pull est prise en charge pour les rubriques dans un espace de noms Event Grid.

Important

Event Hubs est pris en charge en tant que destination pour les abonnements à des rubriques d’un espace de noms. Dans les prochaines versions, les espaces de noms Event Grid prendront en charge toutes les destinations actuellement disponibles dans Event Grid de base, ainsi que d’autres destinations.

Schéma de haut niveau montrant la livraison en mode push et en mode pull, ainsi que les types de ressources concernés.

Quand utiliser la livraison en mode push ou en mode pull

Voici des instructions générales pour vous aider à décider quand utiliser la livraison par extraction ou par envoi.

Remise pull

  • Vous avez besoin d’un contrôle total quant au moment où recevoir des événements. Par exemple, votre application peut ne pas fonctionner tout le temps, elle peut ne pas être assez stable ou bien vous traitez des données à certains moments.
  • Vous avez besoin d’un contrôle total sur la consommation des événements. Par exemple, un service ou une couche en aval dans votre application grand public présente un problème qui vous empêche de traiter les événements. Dans ce cas, l’API de livraison pull permet à l’application grand public de libérer un événement déjà lu sur le répartiteur afin qu’il puisse être livré ultérieurement.
  • Vous souhaitez utiliser des liaisons privées lors de la réception d’événements, ce qui n’est possible qu’avec la remise pull, et non avec la remise push.
  • Vous n’avez pas la possibilité d’exposer un point de terminaison et d’utiliser la livraison push, mais vous pouvez vous connecter à Event Grid pour consommer des événements.

Livraison push

  • Vous souhaitez éviter l’interrogation en continu pour déterminer si un changement d’état du système s’est produit. Vous utilisez plutôt Event Grid pour vous envoyer des événements au moment où les changements d’état se produisent.
  • Vous disposez d’une application qui ne peut pas effectuer d’appels sortants. Par exemple, l’exfiltration des données peut préoccuper votre organisation. Toutefois, votre application peut recevoir des événements via un point de terminaison public.