Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une transformation de manette limite la fréquence de transmission des messages sur un sujet MQTT. Au lieu d’écarter les messages en fonction de leur contenu, la transformation de limitation de débit écarte les messages en fonction du moment où elle les traite, en n’en transférant qu’un seul au maximum par modèle de rubrique au cours de chaque intervalle configuré. Utilisez la limitation de la vitesse pour protéger les systèmes en aval des sources en rafale ou à haute fréquence sans modifier le contenu du message.
Pour obtenir une vue d’ensemble des graphiques de flux de données et la façon dont les transformations composent dans un pipeline, consultez vue d’ensemble des graphiques de flux de données.
Prerequisites
- Instance de Opérations Azure IoT déployée dans un cluster Kubernetes. Pour plus d’informations, consultez Deploy Opérations Azure IoT.
- Le déploiement crée automatiquement un point de terminaison de registre par défaut nommé
defaultqui pointe versmcr.microsoft.com. Les transformations intégrées utilisent ce point de terminaison.
Limitation de mise à l’échelle des graphes à état
Important
Les transformations de fenêtre et de manette des gaz sont avec état. Chaque instance maintient son propre état et les instances ne partagent pas cet état entre elles. Lorsque le nombre d’instances du profil de flux de données est supérieur à un, les abonnements partagés répartissent les messages entre les instances, de sorte que chaque instance ne voit qu’un sous-ensemble des messages. Une transformée de fenêtre calcule ensuite des agrégations telles que les moyennes, les sommes et les comptages sur un jeu de données partiel, et une transformée de puissance impose la limite de débit configurée indépendamment dans chaque instance au lieu de couvrir l’ensemble du pipeline.
Réglez le nombre d’instances du profil de flux de données à 1 pour tout graphique de flux de données utilisant une transformation de fenêtre ou de régulation. Les graphes de flux de données sans état qui utilisent uniquement les transformations de cartographie, filtre, branchement et concaténation peuvent utiliser en toute sécurité des comptes d’instances plus élevés pour augmenter le débit.
Fonctionnement de la transformation throttle
La transformation de manette évalue le sujet de chaque message entrant selon une liste ordonnée de règles par sujet :
- Première victoire de match. La transformation évalue les règles dans l’ordre. La première règle dont
topicle motif correspond au sujet du message détermine si la transformation redirige le message. La transformation ne vérifie pas les règles ultérieures, même si elles correspondraient aussi. - Des sujets incomparables passent à travers. Si aucune règle ne correspond au sujet du message, la transformation transmet le message sans aucune limitation.
- Le transfert est basé sur le temps, pas sur le comptage. Pour une règle correspondante, la transformation transmet le premier message qu’elle traite, puis supprime chaque message suivant sur ce motif jusqu’à ce que l’intervalle configuré (
1000 / maxMessagesPerSecondmillisecondes, arrondi vers le haut) se soit écoulé depuis le dernier message transféré. Ce comportement limite le taux maximal mais ne permet pas aux rafales de compenser les chutes précédentes. - État partagé par motif, pas par sujet. Lorsque le motif de la règle
topicutilise un caractère générique, toutes les rubriques spécifiques qui y correspondent partagent le même état de limitation du débit dans une instance de transformation. Par exemple, une règle uniquesensors/+limite le taux combiné à traverssensors/temperatureetsensors/humidity, et non chacun indépendamment. -
0laisse tout tomber. En réglantmaxMessagesPerSecond0pour une règle, chaque message correspondant au schéma de cette règle disparaît. - Le timing est basé sur le temps de traitement, pas sur le contenu du message. La transformation utilise son horloge monotone lorsqu’elle traite chaque message. Il ne lit pas de champ d’horodatage depuis la charge utile du message.
Note
La transformation de limitation de débit sert uniquement à déterminer s’il faut transférer ou ignorer un message. Il ne modifie jamais le contenu du message.
Configurez les règles de limitation du débit par sujet
Définissez les règles de limitation dans la clé de configuration throttle (pas rules) sous la forme d’un objet JSON avec un tableau perTopicThrottles.
- Expérience des opérations
- Service de contrôle d’accès Azure (CLI)
- Bicep
- Kubernetes (débogage uniquement)
Dans la configuration de la transformation de limitation du débit, ajoutez une ou plusieurs règles de limitation du débit. Pour chaque règle, spécifiez :
| Setting | Description |
|---|---|
| Topic | Le modèle de sujet MQTT à faire correspondre. Prend en charge les caractères génériques + (à un niveau) et # (à plusieurs niveaux). |
| Nombre maximal de messages par seconde | Le taux maximal de transfert pour les sujets correspondant à ce schéma. Réglez sur 0 pour rejeter tous les messages correspondants. |
Avec cette règle, la transformation transmet le premier sensors/temperature message traité, puis supprime tout autre message sur ce sujet traité moins de 100 millisecondes plus tard (1000 / 10). Cette règle n’affecte pas les sujets autres que sensors/temperature.
Chaque entrée dans perTopicThrottles possède ces propriétés :
| Propriété | Obligatoire | Description |
|---|---|---|
topic |
Yes | Modèle de rubrique MQTT à faire correspondre. Prend en charge les jokers + (à niveau unique) et # (multiniveau, en position finale uniquement). |
maxMessagesPerSecond |
Yes | Taux maximal de redirection pour les sujets correspondant à ce schéma, en messages par seconde. La transformée permet des valeurs fractionnaires. Par exemple, 0.1 permet un message toutes les 10 secondes. Doit être zéro ou un nombre positif, fini. Réglez pour 0 supprimer tous les messages correspondant au schéma. Le timing a une précision de 1 milliseconde, donc les valeurs supérieures à 1000 ont la même limite effective que 1000. |
Important
Chaque topic motif dans perTopicThrottles doit être unique. La transformation n’accepte pas qu’une même chaîne de caractères de motif soit configurée plus d’une fois lors de l’initialisation.
Utilisez plusieurs règles par sujet
Comme la transformation évalue les règles dans l’ordre et que la première partie gagne, listez des motifs plus spécifiques avant des modèles plus généraux si vous voulez qu’ils aient leur propre limite de taux :
- Expérience des opérations
- Service de contrôle d’accès Azure (CLI)
- Bicep
- Kubernetes (débogage uniquement)
Ajoutez deux règles, dans cet ordre :
| Commande | Sujet | Nombre maximal de messages par seconde |
|---|---|---|
| 1 | sensors/temperature |
10 |
| 2 | sensors/# |
1 |
Les messages sur sensors/temperature correspondent à la première règle et sont limités à 10 messages par seconde. Les messages sur tout autre sensors/* sujet (par exemple, sensors/humidity) correspondent à la seconde règle et partagent une limite combinée d’un message par seconde.
Important
L’ordre est important. Si la sensors/# règle était listée en premier, elle correspondrait sensors/temperature aussi aux messages, et la transformation n’atteindrait jamais la règle plus spécifique.
Utilisez des caractères génériques pour réguler des groupes de rubriques
Le topic modèle prend en charge les mêmes caractères génériques que les filtres de rubrique MQTT :
| Caractère générique | Correspondances | Exemple |
|---|---|---|
+ |
Exactement un niveau thématique |
sensors/+/status correspond à sensors/line1/status mais pas à sensors/line1/sub/status |
# |
Zéro ou plusieurs niveaux de rubrique restants, et doit constituer le dernier segment |
sensors/# correspond à sensors, à sensors/temperature et à sensors/line1/temperature |
Toutes les rubriques concrètes correspondant à la même règle avec caractère générique partagent le même état de limitation de débit.
- Expérience des opérations
- Service de contrôle d’accès Azure (CLI)
- Bicep
- Kubernetes (débogage uniquement)
Ajoutez une règle avec le sujet sensors/+ et un maximum de messages par seconde 1.
Avec cette règle, un message sur sensors/temperature et un message sur sensors/humidity, traités à 500 millisecondes d’intervalle, ne sont pas tous deux transmis : le second est ignoré, car il est comptabilisé dans le même intervalle partagé d’une seconde que le premier, quel que soit le sujet précis auquel il appartient.
Note
Un motif nu # correspond à chaque sujet et applique une limite de débit combinée unique dans chaque instance de transformation.
Supprimer tous les messages pour un sujet
Définissez maxMessagesPerSecond sur 0 pour supprimer tous les messages correspondant à un motif, sans retirer la règle ni le sujet de votre pipeline :
- Expérience des opérations
- Service de contrôle d’accès Azure (CLI)
- Bicep
- Kubernetes (débogage uniquement)
Ajoutez une règle avec le sujet debug/# et un maximum de messages par seconde 0.
Déploie un graphique de flux de données avec accélérateur
Pour appliquer la limitation de bout en bout, déployez un graphique de flux de données reliant une source, une transformation de manette et une destination. Utilisez l’outil qui correspond à votre flux de travail.
- Expérience des opérations
- Service de contrôle d’accès Azure (CLI)
- Bicep
- Kubernetes (débogage uniquement)
Dans l’environnement Opérations, créer un graphe de flux de données avec une transformation de limitation de débit :
- Ajoutez une source qui lit depuis votre topic MQTT.
- Ajoutez une transformation de limitation du débit. Ajoutez une ou plusieurs règles par sujet, classées du plus au moins spécifique.
- Ajoutez une destination qui envoie à votre rubrique de sortie.
Limitations
- Ça ne modifie pas les messages. La transformation de limitation de débit se contente de transmettre ou de supprimer les messages ; elle n’en modifie pas le contenu.
- Première victoire de match. La transformation n’applique que la première règle dont
topicle motif correspond au sujet du message. Listez des motifs plus spécifiques avant les plus généraux. - État partagé pour chaque motif. Une règle de la carte sauvage partage sa limite de taux sur chaque sujet concret qu’elle correspond. Il n’y a pas de limite distincte par sujet.
- Pas d’autorisation pour les explosions. La transformation impose un temps minimum entre les messages transférés par motif correspondant. Il n’accumule pas la capacité inutilisée des périodes antérieures et plus lentes.
- Précision en millisecondes. L’intervalle minimum d’accélération est de 1 milliseconde, donc des valeurs supérieures à
1000pourmaxMessagesPerSecondn’augmentent pas le débit de transfert effectif au-delà de 1 000 messages par seconde. - Le timing est basé sur le temps de traitement, pas sur le contenu du message. La transformation utilise le temps de traitement de chaque message, et non l’heure à laquelle le courtier l’a reçu ni un champ d’horodatage dans la charge utile.
- L’État est local et dans la mémoire. Chaque instance de profil de flux de données maintient son propre état de régulation. Redémarrer ou reconfigurer la transformation réinitialise cet état. Si un profil compte plusieurs instances, chaque instance applique le taux configuré indépendamment.
- Les modèles de sujet dupliqués ne sont pas autorisés. Configurer la même
topicchaîne plusieurs fois dansperTopicThrottleséchoue lorsque la transformation s’initialise.